Update app.js

added an if statement to display an alert message if the tv config file is not present.
pull/3548/head
Guptilious 2024-09-12 07:56:31 +01:00 committed by GitHub
parent 1a1d8cf1dd
commit ca004b2700
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 89 additions and 61 deletions

View File

@ -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();
}