mirror of https://github.com/espruino/BangleApps
Update app.js
added an if statement to display an alert message if the tv config file is not present.pull/3548/head
parent
1a1d8cf1dd
commit
ca004b2700
|
@ -9,13 +9,15 @@ let devicefile = require("Storage").readJSON(deviceFileName, true);
|
||||||
//console.log(devicefile);
|
//console.log(devicefile);
|
||||||
|
|
||||||
|
|
||||||
let serverDns = serverData.webServerDns;
|
let serverDns = "webServerDns" in serverData ? serverData.webServerDns : 'undefined';
|
||||||
let serverPort = serverData.port;
|
|
||||||
let tvIp = serverData.tvIp;
|
|
||||||
let username = serverData.username;
|
|
||||||
let password = serverData.password;
|
|
||||||
|
|
||||||
let panaIp = "tvIp" in serverData ? serverData.tvIp : 'undefined';
|
let serverPort = "port" in serverData ? serverData.port : 'undefined';
|
||||||
|
let tvIp = "tvIp" in serverData ? serverData.tvIp : 'undefined';
|
||||||
|
let username = "username" in serverData ? serverData.username : 'undefined';
|
||||||
|
let password = "password" in serverData ? serverData.password : 'undefined';
|
||||||
|
|
||||||
|
let panaIp = tvIp;
|
||||||
|
//"tvIp" in serverData ? serverData.tvIp : 'undefined';
|
||||||
let settingsPort = "port" in serverData ? serverData.port : 'undefined';
|
let settingsPort = "port" in serverData ? serverData.port : 'undefined';
|
||||||
|
|
||||||
let counter;
|
let counter;
|
||||||
|
@ -31,7 +33,12 @@ let RIGHT_MARGIN = 15;
|
||||||
let midpoint = (g.getWidth() / 2);
|
let midpoint = (g.getWidth() / 2);
|
||||||
let IP_AREA = [0, RESULT_HEIGHT, g.getWidth(), g.getHeight()]; // values used for key buttons
|
let IP_AREA = [0, RESULT_HEIGHT, g.getWidth(), g.getHeight()]; // values used for key buttons
|
||||||
let KEY_AREA = [0, 24, g.getWidth(), g.getHeight()];
|
let KEY_AREA = [0, 24, g.getWidth(), g.getHeight()];
|
||||||
let COLORS = {DEFAULT: ['#FF0000'], BLACK: ['#000000'], WHITE: ['#FFFFFF'], GREY: ['#808080', '#222222']}; // background
|
let COLORS = {
|
||||||
|
DEFAULT: ['#FF0000'],
|
||||||
|
BLACK: ['#000000'],
|
||||||
|
WHITE: ['#FFFFFF'],
|
||||||
|
GREY: ['#808080', '#222222']
|
||||||
|
}; // background
|
||||||
|
|
||||||
let sourceApps = {
|
let sourceApps = {
|
||||||
"selection": {
|
"selection": {
|
||||||
|
@ -178,7 +185,7 @@ let volume = sourceApps.volume;
|
||||||
let selection = sourceApps.selection;
|
let selection = sourceApps.selection;
|
||||||
let numbers = sourceApps.numbers;
|
let numbers = sourceApps.numbers;
|
||||||
|
|
||||||
function assignScreen (screen) {
|
function assignScreen(screen) {
|
||||||
currentScreen = screen;
|
currentScreen = screen;
|
||||||
console.log(currentScreen);
|
console.log(currentScreen);
|
||||||
}
|
}
|
||||||
|
@ -195,14 +202,13 @@ function sendPost(keyPress) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Bangle.http(
|
Bangle.http(
|
||||||
serverUrl,
|
serverUrl, {
|
||||||
{
|
method: 'POST',
|
||||||
method: 'POST',
|
headers: {
|
||||||
headers: {
|
'Authorization': `Basic ${credentials}`,
|
||||||
'Authorization': `Basic ${credentials}`,
|
},
|
||||||
},
|
body: JSON.stringify(keyJson)
|
||||||
body: JSON.stringify(keyJson)
|
})
|
||||||
})
|
|
||||||
.then(response => {
|
.then(response => {
|
||||||
console.log("Response received:", response);
|
console.log("Response received:", response);
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
|
@ -211,19 +217,18 @@ function sendPost(keyPress) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function receiveDevices() {
|
function receiveDevices() {
|
||||||
serverPort = settingsPort;
|
let serverPort = settingsPort;
|
||||||
let credentials = btoa(`${username}:${password}`);
|
let credentials = btoa(`${username}:${password}`);
|
||||||
let serverUrl = `https://${serverDns}:${serverPort}/ssdp-devices.json`;
|
let serverUrl = `https://${serverDns}:${serverPort}/ssdp-devices.json`;
|
||||||
return Bangle.http(
|
return Bangle.http(
|
||||||
serverUrl,
|
serverUrl, {
|
||||||
{
|
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization': `Basic ${credentials}`
|
'Authorization': `Basic ${credentials}`
|
||||||
},
|
},
|
||||||
}).then(data => {
|
}).then(data => {
|
||||||
require("Storage").write(deviceFileName, data);
|
require("Storage").write(deviceFileName, data);
|
||||||
devicefile = require("Storage").readJSON(deviceFileName, true);
|
devicefile = require("Storage").readJSON(deviceFileName, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,7 +282,7 @@ function drawKeys(area, buttons) {
|
||||||
|
|
||||||
function displayOutput(num, screenValue) { // top block
|
function displayOutput(num, screenValue) { // top block
|
||||||
num = num.toString();
|
num = num.toString();
|
||||||
g.setFont('Vector', 18); //'7x11Numeric7Seg'
|
g.setFont('Vector', 18); //'7x11Numeric7Seg'
|
||||||
g.setFontAlign(1, 0);
|
g.setFontAlign(1, 0);
|
||||||
g.setBgColor(0).clearRect(0, 0, g.getWidth(), RESULT_HEIGHT - 1);
|
g.setBgColor(0).clearRect(0, 0, g.getWidth(), RESULT_HEIGHT - 1);
|
||||||
g.setColor(-1); // value
|
g.setColor(-1); // value
|
||||||
|
@ -288,27 +293,25 @@ function displayOutput(num, screenValue) { // top block
|
||||||
function buttonPress(val, screenValue) {
|
function buttonPress(val, screenValue) {
|
||||||
|
|
||||||
if (screenValue === "ip") {
|
if (screenValue === "ip") {
|
||||||
if (val === "<") currNumber = currNumber.slice(0,-1);
|
if (val === "<") currNumber = currNumber.slice(0, -1);
|
||||||
else if (val === ".") currNumber = currNumber + ".";
|
else if (val === ".") currNumber = currNumber + ".";
|
||||||
else currNumber = currNumber == null ? val : currNumber + val; // currNumber is null if no value pressed
|
else currNumber = currNumber == null ? val : currNumber + val; // currNumber is null if no value pressed
|
||||||
|
|
||||||
let ipcount = (currNumber.match(/\./g) || []).length;
|
let ipcount = (currNumber.match(/\./g) || []).length;
|
||||||
if (ipcount > 3 || currNumber.length > 15) currNumber = currNumber.slice(0,-1);
|
if (ipcount > 3 || currNumber.length > 15) currNumber = currNumber.slice(0, -1);
|
||||||
|
|
||||||
displayOutput(currNumber, screenValue);
|
displayOutput(currNumber, screenValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
let checkValue = appData.some(app => app.name === screenValue); // check app data
|
let checkValue = appData.some(app => app.name === screenValue); // check app data
|
||||||
|
|
||||||
if (checkValue) sendPost(val); // app values
|
if (checkValue) sendPost(val); // app values
|
||||||
|
|
||||||
if (screenValue === "numbers") {
|
if (screenValue === "numbers") {
|
||||||
if (val === '<') sendPost('back');
|
if (val === '<') sendPost('back');
|
||||||
else if (val === 'ok') sendPost('enter');
|
else if (val === 'ok') sendPost('enter');
|
||||||
else sendPost("num_"+val);
|
else sendPost("num_" + val);
|
||||||
}
|
} else if (screenValue === "selection") sendPost(selection[val].key);
|
||||||
|
|
||||||
else if (screenValue === "selection") sendPost(selection[val].key);
|
|
||||||
else if (screenValue === "volume") sendPost(volume[val].key);
|
else if (screenValue === "volume") sendPost(volume[val].key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,7 +330,7 @@ const powerScreen = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const appMenu = () => {
|
const appMenu = () => {
|
||||||
|
|
||||||
assignScreen("apps");
|
assignScreen("apps");
|
||||||
E.showScroller({
|
E.showScroller({
|
||||||
h: 54,
|
h: 54,
|
||||||
|
@ -367,7 +370,7 @@ let tvSelector = {
|
||||||
"": {
|
"": {
|
||||||
title: "TV Selector",
|
title: "TV Selector",
|
||||||
back: function() {
|
back: function() {
|
||||||
load();//E.showMenu(tvSelector);
|
load(); //E.showMenu(tvSelector);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Panasonic": function() {
|
"Panasonic": function() {
|
||||||
|
@ -398,7 +401,7 @@ function clearCountdown() {
|
||||||
function countDown(callback) {
|
function countDown(callback) {
|
||||||
require("widget_utils").show();
|
require("widget_utils").show();
|
||||||
if (counter === 0) {
|
if (counter === 0) {
|
||||||
callback(); // Call the callback function when countdown reaches 0
|
callback(); // Call the callback function when countdown reaches 0
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
E.showMessage(`Searching for devices...\n${counter}`, "Device Search");
|
E.showMessage(`Searching for devices...\n${counter}`, "Device Search");
|
||||||
|
@ -453,36 +456,51 @@ function subMenu() {
|
||||||
|
|
||||||
if (typeof settingsPort !== 'undefined' && settingsPort !== 'undefined') {
|
if (typeof settingsPort !== 'undefined' && settingsPort !== 'undefined') {
|
||||||
let portHeader = `Port: ${settingsPort}`;
|
let portHeader = `Port: ${settingsPort}`;
|
||||||
settingssub[portHeader] = function() { IPASSIGN = "port"; ipScreen();};
|
settingssub[portHeader] = function() {
|
||||||
|
IPASSIGN = "port";
|
||||||
|
ipScreen();
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
settingssub["Set DNS Port"] = function() { IPASSIGN = "port"; ipScreen();};
|
settingssub["Set DNS Port"] = function() {
|
||||||
|
IPASSIGN = "port";
|
||||||
|
ipScreen();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof panaIp !== 'undefined' && panaIp !== 'undefined') {
|
if (typeof panaIp !== 'undefined' && panaIp !== 'undefined') {
|
||||||
let panaheader = `Pana IP: ${panaIp}`;
|
let panaheader = `Pana IP: ${panaIp}`;
|
||||||
settingssub[panaheader] = function() {
|
settingssub[panaheader] = function() {
|
||||||
IPASSIGN = "pana";
|
IPASSIGN = "pana";
|
||||||
E.showMenu(deviceSelect);
|
E.showMenu(deviceSelect);
|
||||||
devicefile = require("Storage").readJSON("tvdevicelist.json", true);
|
devicefile = require("Storage").readJSON("tvdevicelist.json", true);
|
||||||
console.log(devicefile);
|
console.log(devicefile);
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
settingssub["Set Pana IP"] = function() { IPASSIGN = "pana"; ipScreen();};
|
settingssub["Set Pana IP"] = function() {
|
||||||
|
IPASSIGN = "pana";
|
||||||
|
ipScreen();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof samsIp !== 'undefined' && panaIp !== 'undefined') {
|
if (typeof samsIp !== 'undefined' && panaIp !== 'undefined') {
|
||||||
let samsheader = `Sams IP: ${samsIp}`;
|
let samsheader = `Sams IP: ${samsIp}`;
|
||||||
settingssub[samsheader] = function() { IPASSIGN = "sams"; ipScreen();};
|
settingssub[samsheader] = function() {
|
||||||
|
IPASSIGN = "sams";
|
||||||
|
ipScreen();
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
settingssub["Set Sams IP"] = function() { IPASSIGN = "sams"; ipScreen();};
|
settingssub["Set Sams IP"] = function() {
|
||||||
|
IPASSIGN = "sams";
|
||||||
|
ipScreen();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
E.showMenu(settingssub);
|
E.showMenu(settingssub);
|
||||||
}
|
}
|
||||||
|
|
||||||
const deviceMenu = () => {
|
const deviceMenu = () => {
|
||||||
let parsedResp = JSON.parse(devicefile.resp);
|
let parsedResp = JSON.parse(devicefile.resp);
|
||||||
E.showScroller({
|
E.showScroller({
|
||||||
h: 54,
|
h: 54,
|
||||||
c: parsedResp.length,
|
c: parsedResp.length,
|
||||||
draw: (i, r) => {
|
draw: (i, r) => {
|
||||||
|
@ -515,13 +533,16 @@ let parsedResp = JSON.parse(devicefile.resp);
|
||||||
|
|
||||||
|
|
||||||
let deviceSelect = {
|
let deviceSelect = {
|
||||||
"" : { title : "Device Select",
|
"": {
|
||||||
back : function() { subMenu(); }
|
title: "Device Select",
|
||||||
},
|
back: function() {
|
||||||
"Manual IP Assign" : function() {
|
subMenu();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Manual IP Assign": function() {
|
||||||
ipScreen();
|
ipScreen();
|
||||||
},
|
},
|
||||||
"Device Select" : function() {
|
"Device Select": function() {
|
||||||
receiveDevices();
|
receiveDevices();
|
||||||
counter = 5;
|
counter = 5;
|
||||||
countDown(deviceMenu);
|
countDown(deviceMenu);
|
||||||
|
@ -549,7 +570,7 @@ function swipeHandler(LR, UD) {
|
||||||
sendPost("enter");
|
sendPost("enter");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (LR == 1) { // swipe right
|
if (LR == 1) { // swipe right
|
||||||
if (currentScreen === "apps") {
|
if (currentScreen === "apps") {
|
||||||
assignScreen("power");
|
assignScreen("power");
|
||||||
E.showScroller();
|
E.showScroller();
|
||||||
|
@ -560,13 +581,13 @@ function swipeHandler(LR, UD) {
|
||||||
sendPost("back");
|
sendPost("back");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (UD == -1) { // swipe up
|
if (UD == -1) { // swipe up
|
||||||
if (currentScreen === "selection") {
|
if (currentScreen === "selection") {
|
||||||
assignScreen("volume");
|
assignScreen("volume");
|
||||||
prepareScreen(volume, volumeGrid, COLORS.DEFAULT, KEY_AREA);
|
prepareScreen(volume, volumeGrid, COLORS.DEFAULT, KEY_AREA);
|
||||||
drawKeys(KEY_AREA, volume);
|
drawKeys(KEY_AREA, volume);
|
||||||
} else if (currentScreen === "volume") {
|
} else if (currentScreen === "volume") {
|
||||||
sendPost("enter");
|
sendPost("enter");
|
||||||
} else if (currentScreen === "ip") {
|
} else if (currentScreen === "ip") {
|
||||||
buttonPress(".", "ip");
|
buttonPress(".", "ip");
|
||||||
} else if (currentScreen == "numbers") {
|
} else if (currentScreen == "numbers") {
|
||||||
|
@ -575,15 +596,15 @@ function swipeHandler(LR, UD) {
|
||||||
drawKeys(KEY_AREA, selection);
|
drawKeys(KEY_AREA, selection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (UD == 1) { // swipe down
|
if (UD == 1) { // swipe down
|
||||||
if (currentScreen === "volume") {
|
if (currentScreen === "volume") {
|
||||||
assignScreen("selection");
|
assignScreen("selection");
|
||||||
prepareScreen(selection, selectionGrid, COLORS.DEFAULT, KEY_AREA);
|
prepareScreen(selection, selectionGrid, COLORS.DEFAULT, KEY_AREA);
|
||||||
drawKeys(KEY_AREA, selection);
|
drawKeys(KEY_AREA, selection);
|
||||||
} else if (currentScreen === "selection") {
|
} else if (currentScreen === "selection") {
|
||||||
assignScreen("numbers");
|
assignScreen("numbers");
|
||||||
prepareScreen(numbers, numbersGrid, COLORS.DEFAULT, KEY_AREA);
|
prepareScreen(numbers, numbersGrid, COLORS.DEFAULT, KEY_AREA);
|
||||||
drawKeys(KEY_AREA, numbers);
|
drawKeys(KEY_AREA, numbers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -624,4 +645,11 @@ Bangle.on('touch', touchHandler);
|
||||||
|
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
mainMenu();
|
|
||||||
|
if (serverData === undefined) {
|
||||||
|
E.showAlert(`${serverDataFile}.json missing.\nSee READ.me`, "Config Error").then(function() {
|
||||||
|
mainMenu();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
mainMenu();
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue