diff --git a/apps/slpquiet/app.js b/apps/slpquiet/app.js index 5c8bc0dae..9d339ff12 100644 --- a/apps/slpquiet/app.js +++ b/apps/slpquiet/app.js @@ -4,29 +4,29 @@ let saved = storage.readJSON(SETTINGS_FILE, 1) || {}; // Main menu var mainmenu = { -"" : { - "title" : "Quiet Switch" + "": { + "title": "Quiet Switch" }, - "Quiet Switch" : { - value : saved.quietWhenSleep, - format : v => v?"On":"Off", - min:0,max:1,step:1, - onchange :v=>{ + "Quiet Switch": { + value: saved.quietWhenSleep, + format: v => v ? "On" : "Off", + min: 0, max: 1, step: 1, + onchange: v => { saved.quietWhenSleep = v; - storage.writeJSON(SETTINGS_FILE,saved); + storage.writeJSON(SETTINGS_FILE, saved); } }, - "Quiet Mode" : { - value : saved.quietMode, - format : v => v?"Alerts":"Silent", - min:0,max:1,step:1, - onchange :v=>{ + "Quiet Mode": { + value: saved.quietMode, + format: v => v ? "Alerts" : "Silent", + min: 0, max: 1, step: 1, + onchange: v => { saved.quietMode = v; - storage.writeJSON(SETTINGS_FILE,saved); + storage.writeJSON(SETTINGS_FILE, saved); } }, - "Exit" : function() {load();}, + "Exit": function () { load(); }, }; // Actually display the menu @@ -34,11 +34,11 @@ E.showMenu(mainmenu); // Function to fix time format function fixTime(h, m) { - if (h.toString().length <2) { + if (h.toString().length < 2) { h = "0" + h.toString(); } - if (m.toString().length <2) { + if (m.toString().length < 2) { m = "0" + m.toString(); } - return h.toString() +":" + m.toString(); + return h.toString() + ":" + m.toString(); } diff --git a/apps/slpquiet/boot.js b/apps/slpquiet/boot.js index a4eb3faeb..a6a79f877 100644 --- a/apps/slpquiet/boot.js +++ b/apps/slpquiet/boot.js @@ -2,51 +2,51 @@ if (typeof (global.sleeplog || {}).trigger === "object") { // then add your parameters with the function to call as object into the trigger object -sleeplog.trigger["quietMode"] = { + sleeplog.trigger["quietMode"] = { onChange: true, // false as default, if true call fn only on a status change from: 0, // 0 as default, in ms, first time fn will be called - // to: 24*60*60*1000, // 24h as default, in ms, last time fn will be called - to: 0, + // to: 24*60*60*1000, // 24h as default, in ms, last time fn will be called + to: 0, // reference time to from & to is rounded to full minutes - fn: function(data, thisTriggerEntry) { + fn: function (data, thisTriggerEntry) { aSettings = require('Storage').readJSON('quietSwitch.json', 1) || {}; const DEFAULTS = { - 'quietWhenSleep': false, - 'quietMode': 1 + 'quietWhenSleep': false, + 'quietMode': 1 }; Object.keys(DEFAULTS).forEach(k => { - if (aSettings[k] === undefined) aSettings[k] = DEFAULTS[k]; + if (aSettings[k] === undefined) aSettings[k] = DEFAULTS[k]; }); - if (aSettings && aSettings['quietWhenSleep']){ - console.log("the sleep status is: "+data.status); + if (aSettings && aSettings['quietWhenSleep']) { + console.log("the sleep status is: " + data.status); quietMode = aSettings['quietMode']; delete aSettings; - if ((data.status === 3 || data.status === 4) - && (data.prevStatus !== 3 && data.prevStatus !== 4 )) { - bSettings = require("Storage").readJSON('setting.json',true)||{}; - current = 0|bSettings.quiet; + if ((data.status === 3 || data.status === 4) + && (data.prevStatus !== 3 && data.prevStatus !== 4)) { + bSettings = require("Storage").readJSON('setting.json', true) || {}; + current = 0 | bSettings.quiet; console.log("quiet mode is:" + current); - if (current !== quietMode ){ + if (current !== quietMode) { console.log("fallen asleep"); - bSettings.quiet = quietMode; + bSettings.quiet = quietMode; require("Storage").writeJSON("setting.json", bSettings); + } + delete bSettings; } - delete bSettings; - } - if ((data.status === 2 || data.status === 1) - && (data.prevStatus !== 2 && data.prevStatus !== 1 )) { - bSettings = require("Storage").readJSON('setting.json',true)||{}; - current = 0|bSettings.quiet; + if ((data.status === 2 || data.status === 1) + && (data.prevStatus !== 2 && data.prevStatus !== 1)) { + bSettings = require("Storage").readJSON('setting.json', true) || {}; + current = 0 | bSettings.quiet; console.log("quiet mode is:" + current); - if (current !== 0 ){ + if (current !== 0) { console.log("woken up"); bSettings.quiet = 0; require("Storage").writeJSON("setting.json", bSettings); } - delete bSettings; + delete bSettings; } } - } + } }; } diff --git a/apps/slpquiet/widget.js b/apps/slpquiet/widget.js index 048bac4ff..7412ecce2 100644 --- a/apps/slpquiet/widget.js +++ b/apps/slpquiet/widget.js @@ -1,36 +1,36 @@ -(function() { +(function () { WIDGETS["slpquiet"] = { area: "tl", - width: ((require("Storage").readJSON("setting.json", 1) || {}).quiet|0) ? 24 : 0, - draw: function() { - const mode = (require("Storage").readJSON("setting.json", 1) || {}).quiet|0; - if (mode===0) { // Off - if (this.width!==0) { + width: ((require("Storage").readJSON("setting.json", 1) || {}).quiet | 0) ? 24 : 0, + draw: function () { + const mode = (require("Storage").readJSON("setting.json", 1) || {}).quiet | 0; + if (mode === 0) { // Off + if (this.width !== 0) { this.width = 0; Bangle.drawWidgets(); } return; } // not Off: make sure width is correct - if (this.width!==24) { + if (this.width !== 24) { this.width = 24; Bangle.drawWidgets(); return; // drawWidgets will call draw again } let x = this.x, y = this.y; - g.reset().clearRect(x, y, x+23, y+23); + g.reset().clearRect(x, y, x + 23, y + 23); // quiet mode: draw red one-way-street sign (dim red on Bangle.js 1) - x = this.x+11;y = this.y+11; // center of widget - g.setColor(process.env.HWVERSION===2 ? 1 : 0.8, 0, 0).fillCircle(x, y, 8); - g.setColor(g.theme.bg).fillRect(x-6, y-2, x+6, y+2); - if (mode>1) {return;} // no alarms + x = this.x + 11; y = this.y + 11; // center of widget + g.setColor(process.env.HWVERSION === 2 ? 1 : 0.8, 0, 0).fillCircle(x, y, 8); + g.setColor(g.theme.bg).fillRect(x - 6, y - 2, x + 6, y + 2); + if (mode > 1) { return; } // no alarms // alarms still on: draw alarm icon in bottom-right corner - x = this.x+18;y = this.y+17; // center of alarm + x = this.x + 18; y = this.y + 17; // center of alarm g.setColor(1, 1, 0) .fillCircle(x, y, 3) // alarm body - .fillRect(x-5, y+2, x+5, y+3) // bottom ridge - .fillRect(x-1, y-5, x+1, y+5).drawLine(x, y-6, x, y+6) // top+bottom - .drawLine(x+5, y-3, x+3, y-5).drawLine(x-5, y-3, x-3, y-5); // wriggles + .fillRect(x - 5, y + 2, x + 5, y + 3) // bottom ridge + .fillRect(x - 1, y - 5, x + 1, y + 5).drawLine(x, y - 6, x, y + 6) // top+bottom + .drawLine(x + 5, y - 3, x + 3, y - 5).drawLine(x - 5, y - 3, x - 3, y - 5); // wriggles }, }; })(); diff --git a/apps/thmswtch/app.js b/apps/thmswtch/app.js index e4312a44d..2ac67468e 100644 --- a/apps/thmswtch/app.js +++ b/apps/thmswtch/app.js @@ -5,163 +5,172 @@ var SunCalc = require("suncalc"); // from modules folder const locale = require("locale"); let settings = storage.readJSON('setting.json', 1); let saved = storage.readJSON(SETTINGS_FILE, 1) || {}; -if (settings.theme.fg >0) { - saved.darkModeActive = 1 -}else { - saved.darkModeActive = 0 +if (settings.theme.fg > 0) { + saved.darkModeActive = 1 +} else { + saved.darkModeActive = 0 +} +if (require("Storage").readJSON("themeSwitch.json", 1) !== undefined) { + dmH = parseInt(saved.darkModeAt.split(":")[0] | 0); + dmM = parseInt(saved.darkModeAt.split(":")[1] | 0); + lmH = parseInt(saved.lightModeAt.split(":")[0] | 0); + lmM = parseInt(saved.lightModeAt.split(":")[1] | 0); +} else { + dmH = 0; + dmM = 0; + lmH = 0; + lmM = 0; } - if (require("Storage").readJSON("themeSwitch.json",1) !== undefined){ - dmH = parseInt(saved.darkModeAt.split(":")[0]| 0); - dmM = parseInt(saved.darkModeAt.split(":")[1] |0); - lmH = parseInt(saved.lightModeAt.split(":")[0] |0); - lmM = parseInt(saved.lightModeAt.split(":")[1] |0); - }else{ - dmH = 0; - dmM = 0; - lmH = 0; - lmM = 0; - } // Main menu - - var mainmenu = { - "" : { - "title" : "Theme Switch" + +var mainmenu = { + "": { + "title": "Theme Switch" }, - "< Back" : function() {load();}, - "Automatic Dark Mode" : { - value : saved.darkMode | false, - format : v => v?"On":"Off", - min:0,max:1,step:1, - onchange :v=>{ + "< Back": function () { load(); }, + "Automatic Dark Mode": { + value: saved.darkMode | false, + format: v => v ? "On" : "Off", + min: 0, max: 1, step: 1, + onchange: v => { saved.darkMode = v; - storage.writeJSON(SETTINGS_FILE,saved); + storage.writeJSON(SETTINGS_FILE, saved); } }, - "Dark Mode Active" : { - value : saved.darkModeActive | false, - format : v => v?"On":"Off", - min:0,max:1,step:1, - onchange :v=>{ + "Dark Mode Active": { + value: saved.darkModeActive | false, + format: v => v ? "On" : "Off", + min: 0, max: 1, step: 1, + onchange: v => { saved.darkModeActive = v; - storage.writeJSON(SETTINGS_FILE,saved); - if (v!==0) { + storage.writeJSON(SETTINGS_FILE, saved); + if (v !== 0) { setDarkTheme(); - Bangle.drawWidgets(); - delete m.lastIdx; - }else { - setLightTheme(); - Bangle.drawWidgets(); - delete m.lastIdx;} - } - }, - "Dark Mode by Sun" : { - value : saved.darkModeBySun | false, - format : v => v?"On":"Off", - min:0,max:1,step:1, - onchange : v =>{ - saved.darkModeBySun =v; - if (v!==0) { - //print("calculating sun times"); - calculateSunTimes(); - saved.lightModeAt = sunrise; - saved.darkModeAt = sunset; - //print("sunrise" +sunrise); - //print("sunset" +sunset); - - - - } - storage.writeJSON(SETTINGS_FILE,saved); - }, - }, - "light mode at" : { - value : saved.lightModeAt, - format: v => saved.lightModeAt, - onchange :function(){ - if(saved.darkModeBySun===0){ - E.showMenu(lightModeAtMenu); - } - else{ - E.showAlert("Deactivate dark mode first!", "Action Blocked").then( - function() {E.showMenu(mainmenu);}); - } - } - }, - "dark mode at" : { - value : saved.darkModeAt , - format: v => saved.darkModeAt, - onchange :function(){ - if(saved.darkModeBySun===0){ - E.showMenu(darkModeAtMenu); - } - else{ - E.showAlert("Deactivate dark mode first!", "Action Blocked").then( function() {E.showMenu(mainmenu);}); - } + Bangle.drawWidgets(); + delete m.lastIdx; + } else { + setLightTheme(); + Bangle.drawWidgets(); + delete m.lastIdx; } + } }, - "Exit" : function() {load();}, - + "Dark Mode by Sun": { + value: saved.darkModeBySun | false, + format: v => v ? "On" : "Off", + min: 0, max: 1, step: 1, + onchange: v => { + saved.darkModeBySun = v; + if (v !== 0) { + //print("calculating sun times"); + calculateSunTimes(); + saved.lightModeAt = sunrise; + saved.darkModeAt = sunset; + //print("sunrise" +sunrise); + //print("sunset" +sunset); + + + + } + storage.writeJSON(SETTINGS_FILE, saved); + }, + }, + "light mode at": { + value: saved.lightModeAt, + format: v => saved.lightModeAt, + onchange: function () { + if (saved.darkModeBySun === 0) { + E.showMenu(lightModeAtMenu); + } + else { + E.showAlert("Deactivate dark mode first!", "Action Blocked").then( + function () { E.showMenu(mainmenu); }); + } + } + }, + "dark mode at": { + value: saved.darkModeAt, + format: v => saved.darkModeAt, + onchange: function () { + if (saved.darkModeBySun === 0) { + E.showMenu(darkModeAtMenu); + } + else { + E.showAlert("Deactivate dark mode first!", "Action Blocked").then(function () { E.showMenu(mainmenu); }); + } + } + }, + "Exit": function () { load(); }, + }; var lightModeAtMenu = { - "" : { - "title" : "light mode at" + "": { + "title": "light mode at" }, - "Hour" : { - value : lmH, - min:0,max:23,step:1, - onchange : v => { lmH=v; }}, - "Minute" : { - value : lmM, - min:0,max:59,step:1, - onchange : v => { lmM=v; }}, - "< Back" : function() { saved.lightModeAt = fixTime(lmH,lmM); - storage.writeJSON(SETTINGS_FILE,saved); - E.showMenu(mainmenu); }, - }; + "Hour": { + value: lmH, + min: 0, max: 23, step: 1, + onchange: v => { lmH = v; } + }, + "Minute": { + value: lmM, + min: 0, max: 59, step: 1, + onchange: v => { lmM = v; } + }, + "< Back": function () { + saved.lightModeAt = fixTime(lmH, lmM); + storage.writeJSON(SETTINGS_FILE, saved); + E.showMenu(mainmenu); + }, +}; - var darkModeAtMenu = { - "" : { - "title" : "dark mode at" +var darkModeAtMenu = { + "": { + "title": "dark mode at" }, - "Hour" : { - value : dmH, - min:0,max:23,step:1, - onchange : v => { dmH=v; }}, - "Minute" : { - value : dmM, - min:0,max:59,step:1, - onchange : v => { dmM=v; }}, - "< Back" : function() {saved.darkModeAt = fixTime(dmH,dmM); - storage.writeJSON(SETTINGS_FILE,saved); - E.showMenu(mainmenu); }, - }; + "Hour": { + value: dmH, + min: 0, max: 23, step: 1, + onchange: v => { dmH = v; } + }, + "Minute": { + value: dmM, + min: 0, max: 59, step: 1, + onchange: v => { dmM = v; } + }, + "< Back": function () { + saved.darkModeAt = fixTime(dmH, dmM); + storage.writeJSON(SETTINGS_FILE, saved); + E.showMenu(mainmenu); + }, +}; // Actually display the menu E.showMenu(mainmenu); // Function to fix time format function fixTime(h, m) { - if (h.toString().length <2) { + if (h.toString().length < 2) { h = "0" + h.toString(); } - if (m.toString().length <2) { + if (m.toString().length < 2) { m = "0" + m.toString(); } - return h.toString() +":" + m.toString(); + return h.toString() + ":" + m.toString(); } function calculateSunTimes() { - var location = require("Storage").readJSON("mylocation.json",1)||{}; - location.lat = location.lat||51.5072; - location.lon = location.lon||0.1276; // London - date = new Date(Date.now()); - var times = SunCalc.getTimes(date, location.lat, location.lon); - sunrise = fixTime(times.sunrise.getHours() , times.sunrise.getMinutes()); - sunset = fixTime(times.sunset.getHours() ,times.sunset.getMinutes()); - /* do we want to re-calculate this every day? Or we just assume - that 'show' will get called once a day? */ - } + var location = require("Storage").readJSON("mylocation.json", 1) || {}; + location.lat = location.lat || 51.5072; + location.lon = location.lon || 0.1276; // London + date = new Date(Date.now()); + var times = SunCalc.getTimes(date, location.lat, location.lon); + sunrise = fixTime(times.sunrise.getHours(), times.sunrise.getMinutes()); + sunset = fixTime(times.sunset.getHours(), times.sunset.getMinutes()); + /* do we want to re-calculate this every day? Or we just assume + that 'show' will get called once a day? */ +} function cl(x) { return g.setColor(x).getColor(); } @@ -171,25 +180,25 @@ function upd(th) { storage.write('setting.json', settings); delete g.reset; g._reset = g.reset; - g.reset = function(n) { return g._reset().setColor(th.fg).setBgColor(th.bg); }; - g.clear = function(n) { if (n) g.reset(); return g.clearRect(0,0,g.getWidth(),g.getHeight()); }; + g.reset = function (n) { return g._reset().setColor(th.fg).setBgColor(th.bg); }; + g.clear = function (n) { if (n) g.reset(); return g.clearRect(0, 0, g.getWidth(), g.getHeight()); }; g.clear(1); } function flipTheme() { if (!g.theme.dark) { upd({ - fg:cl("#fff"), bg:cl("#000"), - fg2:cl("#fff"), bg2:cl("#004"), - fgH:cl("#fff"), bgH:cl("#00f"), - dark:true + fg: cl("#fff"), bg: cl("#000"), + fg2: cl("#fff"), bg2: cl("#004"), + fgH: cl("#fff"), bgH: cl("#00f"), + dark: true }); } else { upd({ - fg:cl("#000"), bg:cl("#fff"), - fg2:cl("#000"), bg2:cl("#cff"), - fgH:cl("#000"), bgH:cl("#0ff"), - dark:false + fg: cl("#000"), bg: cl("#fff"), + fg2: cl("#000"), bg2: cl("#cff"), + fgH: cl("#000"), bgH: cl("#0ff"), + dark: false }); } } @@ -197,21 +206,21 @@ function flipTheme() { function setDarkTheme() { if (!g.theme.dark) { upd({ - fg:cl("#fff"), bg:cl("#000"), - fg2:cl("#fff"), bg2:cl("#004"), - fgH:cl("#fff"), bgH:cl("#00f"), - dark:true + fg: cl("#fff"), bg: cl("#000"), + fg2: cl("#fff"), bg2: cl("#004"), + fgH: cl("#fff"), bgH: cl("#00f"), + dark: true }); } } function setLightTheme() { if (g.theme.dark) { - upd({ - fg:cl("#000"), bg:cl("#fff"), - fg2:cl("#000"), bg2:cl("#cff"), - fgH:cl("#000"), bgH:cl("#0ff"), - dark:false + upd({ + fg: cl("#000"), bg: cl("#fff"), + fg2: cl("#000"), bg2: cl("#cff"), + fgH: cl("#000"), bgH: cl("#0ff"), + dark: false }); } } diff --git a/apps/thmswtch/boot.js b/apps/thmswtch/boot.js index 16e2f4b87..bf2a518a6 100644 --- a/apps/thmswtch/boot.js +++ b/apps/thmswtch/boot.js @@ -1,113 +1,114 @@ (function dm() { - function selectRightMode(lt,dt,at) { - if (at < lt && at < dt ) { + function selectRightMode(lt, dt, at) { + if (at < lt && at < dt) { return "lightT"; - }else if (at > lt && at < dt) { + } else if (at > lt && at < dt) { return "darkT"; - }else if (at >lt && at > dt) { - return "lightN";} + } else if (at > lt && at > dt) { + return "lightN"; + } } function setDarkTheme() { if (!g.theme.dark) { upd({ - fg:cl("#fff"), bg:cl("#000"), - fg2:cl("#fff"), bg2:cl("#004"), - fgH:cl("#fff"), bgH:cl("#00f"), - dark:true - }); + fg: cl("#fff"), bg: cl("#000"), + fg2: cl("#fff"), bg2: cl("#004"), + fgH: cl("#fff"), bgH: cl("#00f"), + dark: true + }); } } function setLightTheme() { if (g.theme.dark) { upd({ - fg:cl("#000"), bg:cl("#fff"), - fg2:cl("#000"), bg2:cl("#cff"), - fgH:cl("#000"), bgH:cl("#0ff"), - dark:false + fg: cl("#000"), bg: cl("#fff"), + fg2: cl("#000"), bg2: cl("#cff"), + fgH: cl("#000"), bgH: cl("#0ff"), + dark: false }); } } function fixTime(h, m) { - if (h.toString().length <2) { + if (h.toString().length < 2) { h = "0" + h.toString(); } - if (m.toString().length <2) { + if (m.toString().length < 2) { m = "0" + m.toString(); } - return h.toString() +":" + m.toString(); + return h.toString() + ":" + m.toString(); } function calculateSunTimes() { - var location = require("Storage").readJSON("mylocation.json",1)||{}; - location.lat = location.lat||51.5072; - location.lon = location.lon||0.1276; // London + var location = require("Storage").readJSON("mylocation.json", 1) || {}; + location.lat = location.lat || 51.5072; + location.lon = location.lon || 0.1276; // London date = new Date(Date.now()); var times = SunCalc.getTimes(date, location.lat, location.lon); - sunrise = fixTime(times.sunrise.getHours() , times.sunrise.getMinutes()); - sunset = fixTime(times.sunset.getHours() ,times.sunset.getMinutes()); + sunrise = fixTime(times.sunrise.getHours(), times.sunrise.getMinutes()); + sunset = fixTime(times.sunset.getHours(), times.sunset.getMinutes()); /* do we want to re-calculate this every day? Or we just assume that 'show' will get called once a day? */ } function cl(x) { return g.setColor(x).getColor(); } function upd(th) { g.theme = th; - settings = storage.readJSON('setting.json',1) + settings = storage.readJSON('setting.json', 1) settings.theme = th; storage.write('setting.json', settings); delete g.reset; g._reset = g.reset; - g.reset = function(n) { return g._reset().setColor(th.fg).setBgColor(th.bg); }; - g.clear = function(n) { if (n) g.reset(); return g.clearRect(0,0,g.getWidth(),g.getHeight()); }; + g.reset = function (n) { return g._reset().setColor(th.fg).setBgColor(th.bg); }; + g.clear = function (n) { if (n) g.reset(); return g.clearRect(0, 0, g.getWidth(), g.getHeight()); }; g.clear(1); } try { if (Bangle.dmTimeout) clearTimeout(Bangle.dmTimeout); // so the app can eval() this file to apply changes right away delete Bangle.dmTimeout; - } catch (e) { - print("Bangle.dmTimeout does not exist"); - } + } catch (e) { + print("Bangle.dmTimeout does not exist"); + } const SETTINGS_FILE = "themeSwitch.json"; const storage = require("Storage"); var sunrise, sunset, date; var SunCalc = require("suncalc"); // from modules folder const locale = require("locale"); - let bSettings = storage.readJSON(SETTINGS_FILE,true)||{}; + let bSettings = storage.readJSON(SETTINGS_FILE, true) || {}; const now = new Date(); - hr = now.getHours()+(now.getMinutes()/60)+(now.getSeconds()/3600); // current (decimal) hour + hr = now.getHours() + (now.getMinutes() / 60) + (now.getSeconds() / 3600); // current (decimal) hour dmH = parseFloat(bSettings.darkModeAt.split(":")[0]); dmM = parseFloat(bSettings.darkModeAt.split(":")[1]); lmH = parseFloat(bSettings.lightModeAt.split(":")[0]); lmM = parseFloat(bSettings.lightModeAt.split(":")[1]); print("reading switch timeslots....."); - let dmDec = parseFloat(dmH)+parseFloat(dmM)/parseFloat(60); - let lmDec = parseFloat(lmH)+parseFloat(lmM)/parseFloat(60); - targetMode = selectRightMode(parseFloat(lmDec),parseFloat(dmDec),parseFloat(hr)); - if (targetMode === "lightT" || targetMode === "lightN" ){ + let dmDec = parseFloat(dmH) + parseFloat(dmM) / parseFloat(60); + let lmDec = parseFloat(lmH) + parseFloat(lmM) / parseFloat(60); + targetMode = selectRightMode(parseFloat(lmDec), parseFloat(dmDec), parseFloat(hr)); + if (targetMode === "lightT" || targetMode === "lightN") { nextH = lmH; nextM = lmM; } else { nextH = dmH; nextM = dmM; } - nextDecH = parseFloat(nextH) + parseFloat(nextM)/parseFloat(60); - let t = 3600000*(nextDecH-hr); // timeout in milliseconds - if (t<0) {t += 86400000;} // scheduled for tomorrow: add a day + nextDecH = parseFloat(nextH) + parseFloat(nextM) / parseFloat(60); + let t = 3600000 * (nextDecH - hr); // timeout in milliseconds + if (t < 0) { t += 86400000; } // scheduled for tomorrow: add a day /* update theme mode at the correct time. */ - Bangle.dmTimeout=setTimeout(() => { - if (bSettings.darkMode !==0){ - if (targetMode === "lightT" || targetMode === "lightN" ){ + Bangle.dmTimeout = setTimeout(() => { + if (bSettings.darkMode !== 0) { + if (targetMode === "lightT" || targetMode === "lightN") { setLightTheme(); - }else { + } else { setDarkTheme(); - } + } Bangle.loadWidgets(); Bangle.drawWidgets(); - setTimeout(load, 20); - if (bSettings.darkModeBySun !==0){ + setTimeout(load, 20); + if (bSettings.darkModeBySun !== 0) { calculateSunTimes(); bSettings.lightModeAt = sunrise; bSettings.darkModeAt = sunset; - storage.writeJSON(SETTINGS_FILE, bSettings); + storage.writeJSON(SETTINGS_FILE, bSettings); } dm(); // schedule next update }