From e24b8283b10d3b8d5ec729dc92fecc040b1ca66d Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Mon, 27 Feb 2023 20:34:12 +0000 Subject: [PATCH] Simplify toggling whitelist --- apps/boot/bootupdate.js | 2 +- apps/setting/settings.js | 24 +++++++++++------------- apps/setting/settings.min.json | 2 +- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/apps/boot/bootupdate.js b/apps/boot/bootupdate.js index 39c34e50b..626171490 100644 --- a/apps/boot/bootupdate.js +++ b/apps/boot/bootupdate.js @@ -79,7 +79,7 @@ if (global.save) boot += `global.save = function() { throw new Error("You can't if (s.options) boot+=`Bangle.setOptions(${E.toJS(s.options)});\n`; if (s.brightness && s.brightness!=1) boot+=`Bangle.setLCDBrightness(${s.brightness});\n`; if (s.passkey!==undefined && s.passkey.length==6) boot+=`NRF.setSecurity({passkey:${E.toJS(s.passkey.toString())}, mitm:1, display:1});\n`; -if (s.whitelist && !s.whitelist.disabled) boot+=`NRF.on('connect', function(addr) { if (!(require('Storage').readJSON('setting.json',1)||{}).whitelist.macs.includes(addr)) NRF.disconnect(); });\n`; +if (s.whitelist && !s.whitelist_disabled) boot+=`NRF.on('connect', function(addr) { if (!(require('Storage').readJSON('setting.json',1)||{}).whitelist.includes(addr)) NRF.disconnect(); });\n`; if (s.rotate) boot+=`g.setRotation(${s.rotate&3},${s.rotate>>2});\n` // screen rotation // ================================================== FIXING OLDER FIRMWARES if (FWVERSION<215.068) // 2v15.68 and before had compass heading inverted. diff --git a/apps/setting/settings.js b/apps/setting/settings.js index fac5ea181..5d2a5f7c6 100644 --- a/apps/setting/settings.js +++ b/apps/setting/settings.js @@ -43,10 +43,6 @@ function resetSettings() { "12hour" : false, // 12 or 24 hour clock? firstDayOfWeek: 0, // 0 -> Sunday (default), 1 -> Monday brightness: 1, // LCD brightness from 0 to 1 - whitelist: { // Bluetooth whitelist - macs: [], - disabled: true, - }, // welcomed : undefined/true (whether welcome app should show) options: { wakeOnBTN1: true, @@ -197,10 +193,10 @@ function showBLEMenu() { /*LANG*/'Whitelist': { value: ( - settings.whitelist.disabled ? /*LANG*/"off" : /*LANG*/"on" + settings.whitelist_disabled ? /*LANG*/"off" : /*LANG*/"on" ) + ( - settings.whitelist.macs - ? " (" + settings.whitelist.macs.length + ")" + settings.whitelist + ? " (" + settings.whitelist.length + ")" : "" ), onchange: () => setTimeout(showWhitelistMenu) // graphical_menu redraws after the call @@ -353,25 +349,25 @@ function showWhitelistMenu() { var menu = { "< Back" : ()=>showBLEMenu(), }; - if (settings.whitelist.disabled) { + if (settings.whitelist_disabled) { menu[/*LANG*/"Enable"] = () => { - delete settings.whitelist.disabled; + delete settings.whitelist_disabled; updateSettings(); showBLEMenu(); }; } else { menu[/*LANG*/"Disable"] = () => { - settings.whitelist.disabled = true; + settings.whitelist_disabled = true; updateSettings(); showBLEMenu(); }; } - if (settings.whitelist.macs) settings.whitelist.macs.forEach(function(d){ + if (settings.whitelist) settings.whitelist.forEach(function(d){ menu[d.substr(0,17)] = function() { E.showPrompt(/*LANG*/'Remove\n'+d).then((v) => { if (v) { - settings.whitelist.macs.splice(settings.whitelist.macs.indexOf(d),1); + settings.whitelist.splice(settings.whitelist.indexOf(d),1); updateSettings(); } setTimeout(showWhitelistMenu, 50); @@ -385,7 +381,9 @@ function showWhitelistMenu() { }); NRF.removeAllListeners('connect'); NRF.on('connect', function(addr) { - settings.whitelist.macs.push(addr); + if (!settings.whitelist) settings.whitelist=[]; + delete settings.whitelist_disabled; + settings.whitelist.push(addr); updateSettings(); NRF.removeAllListeners('connect'); showWhitelistMenu(); diff --git a/apps/setting/settings.min.json b/apps/setting/settings.min.json index d4ea23a8e..984054c11 100644 --- a/apps/setting/settings.min.json +++ b/apps/setting/settings.min.json @@ -1 +1 @@ -{"ble":true,"blerepl":true,"log":false,"timeout":10,"vibrate":true,"beep":"vib","timezone":0,"HID":false,"clock":null,"12hour":false,"brightness":1,"options":{"wakeOnBTN1":true,"wakeOnBTN2":true,"wakeOnBTN3":true,"wakeOnFaceUp":false,"wakeOnTouch":false,"wakeOnTwist":true,"twistThreshold":819.2,"twistMaxY":-800,"twistTimeout":1000},"whitelist":{"disabled":true}} +{"ble":true,"blerepl":true,"log":false,"timeout":10,"vibrate":true,"beep":"vib","timezone":0,"HID":false,"clock":null,"12hour":false,"brightness":1,"options":{"wakeOnBTN1":true,"wakeOnBTN2":true,"wakeOnBTN3":true,"wakeOnFaceUp":false,"wakeOnTouch":false,"wakeOnTwist":true,"twistThreshold":819.2,"twistMaxY":-800,"twistTimeout":1000}} \ No newline at end of file