diff --git a/apps/drained/app.ts b/apps/drained/app.ts index 14fa3e378..7f019da81 100644 --- a/apps/drained/app.ts +++ b/apps/drained/app.ts @@ -81,12 +81,22 @@ draw(); Bangle.emit("drained", E.getBattery()); // restore normal boot on charge -const { disableBoot = false }: DrainedSettings +const { disableBoot = false, restore = 20 }: DrainedSettings = require("Storage").readJSON(`${app}.setting.json`, true) || {}; +// re-enable normal boot code when we're above a threshold: if(disableBoot){ + const checkCharge = () => { + if(E.getBattery() < restore) return; + + eval(require('Storage').read('bootupdate.js')); + load(); // necessary after updating boot.0 + }; + + if (Bangle.isCharging()) + checkCharge(); + Bangle.on("charging", charging => { - if (charging) - eval(require('Storage').read('bootupdate.js')); + if(charging) checkCharge(); }); } diff --git a/apps/drained/settings.ts b/apps/drained/settings.ts index a3b377045..5b7523fc9 100644 --- a/apps/drained/settings.ts +++ b/apps/drained/settings.ts @@ -1,5 +1,6 @@ type DrainedSettings = { battery?: number, + restore?: number, interval?: number, disableBoot?: ShortBoolean, }; @@ -10,6 +11,7 @@ type DrainedSettings = { const storage = require("Storage") const settings: DrainedSettings = storage.readJSON(SETTINGS_FILE, true) || {}; settings.battery ??= 5; + settings.restore ??= 20; settings.interval ??= 10; settings.disableBoot ??= false; @@ -50,5 +52,16 @@ type DrainedSettings = { save(); }, }, + "Restore watch at %": { + value: settings.restore, + min: 0, + max: 95, + step: 5, + format: (v: number) => `${v}%`, + onchange: (v: number) => { + settings.restore = v; + save(); + }, + }, }); })