1
0
Fork 0
BangleApps/apps/drained/settings.ts

70 lines
1.5 KiB
TypeScript
Raw Normal View History

2023-04-13 16:51:04 +00:00
type DrainedSettings = {
battery?: number,
restore?: number,
2023-04-13 16:51:04 +00:00
interval?: number,
2023-05-07 09:36:31 +00:00
keepStartup?: ShortBoolean,
2023-04-13 16:51:04 +00:00
};
(back => {
const SETTINGS_FILE = "drained.setting.json";
const storage = require("Storage")
2023-04-13 16:51:04 +00:00
const settings: DrainedSettings = storage.readJSON(SETTINGS_FILE, true) || {};
settings.battery ??= 5;
settings.restore ??= 20;
settings.interval ??= 10;
2023-05-07 09:36:31 +00:00
settings.keepStartup ??= true;
const save = () => {
storage.writeJSON(SETTINGS_FILE, settings)
};
2023-05-07 09:36:31 +00:00
const formatBool = (b: boolean) => b ? "On" : "Off";
E.showMenu({
"": { "title": "Drained" },
"< Back": back,
"Trigger at batt%": {
value: settings.battery,
min: 0,
max: 95,
step: 5,
format: (v: number) => `${v}%`,
onchange: (v: number) => {
settings.battery = v;
save();
},
},
"Poll interval": {
value: settings.interval,
min: 1,
max: 60 * 2,
step: 5,
format: (v: number) => `${v} mins`,
onchange: (v: number) => {
settings.interval = v;
save();
},
},
"Restore watch at %": {
value: settings.restore,
min: 0,
max: 95,
step: 5,
format: (v: number) => `${v}%`,
onchange: (v: number) => {
settings.restore = v;
save();
},
},
2023-05-07 09:36:31 +00:00
"Keep startup code": {
value: settings.keepStartup as boolean,
format: formatBool,
onchange: (b: boolean) => {
settings.keepStartup = b;
save();
},
},
});
}) satisfies SettingsFunc