From 0d18a1fd76b0f185e5e07fccce68f59f6cb55bcd Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Tue, 25 Mar 2025 18:02:00 +0000 Subject: [PATCH] promenu: fix settings being overwritten by alarm/settings apps --- apps/promenu/bootb2.js | 10 +++++----- apps/promenu/bootb2.ts | 11 +++++------ typescript/types/bangle_extensions.d.ts | 2 ++ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/apps/promenu/bootb2.js b/apps/promenu/bootb2.js index 71692dd33..d9204c3ab 100644 --- a/apps/promenu/bootb2.js +++ b/apps/promenu/bootb2.js @@ -1,7 +1,7 @@ var _a, _b; -var settings = (require("Storage").readJSON("promenu.settings.json", true) || {}); -(_a = settings.naturalScroll) !== null && _a !== void 0 ? _a : (settings.naturalScroll = false); -(_b = settings.wrapAround) !== null && _b !== void 0 ? _b : (settings.wrapAround = true); +var S = (require("Storage").readJSON("promenu.settings.json", true) || {}); +(_a = S.naturalScroll) !== null && _a !== void 0 ? _a : (S.naturalScroll = false); +(_b = S.wrapAround) !== null && _b !== void 0 ? _b : (S.wrapAround = true); E.showMenu = function (items) { var RectRnd = function (x1, y1, x2, y2, r) { var pp = []; @@ -168,7 +168,7 @@ E.showMenu = function (items) { } else { var lastSelected = selected; - if (settings.wrapAround) { + if (S.wrapAround) { selected = (selected + dir + menuItems.length) % menuItems.length; } else { @@ -210,7 +210,7 @@ E.showMenu = function (items) { }, }, function (dir) { if (dir) - l.move(settings.naturalScroll ? -dir : dir); + l.move(S.naturalScroll ? -dir : dir); else l.select(); }); diff --git a/apps/promenu/bootb2.ts b/apps/promenu/bootb2.ts index 39bf4d442..50121061c 100644 --- a/apps/promenu/bootb2.ts +++ b/apps/promenu/bootb2.ts @@ -9,10 +9,9 @@ const enum Consts { NAME_SCROLL_PAD = 5, } -const settings = (require("Storage").readJSON("promenu.settings.json", true) || {}) as PromenuSettings; -settings.naturalScroll ??= false; -settings.wrapAround ??= true; - +const S = (require("Storage").readJSON("promenu.settings.json", true) || {}) as PromenuSettings; +S.naturalScroll ??= false; +S.wrapAround ??= true; E.showMenu = (items?: Menu): MenuInstance => { const RectRnd = (x1: number, y1: number, x2: number, y2: number, r: number) => { @@ -217,7 +216,7 @@ E.showMenu = (items?: Menu): MenuInstance => { } else { const lastSelected = selected; - if (settings.wrapAround) { + if (S.wrapAround) { selected = (selected + dir + /*keep +ve*/menuItems.length) % menuItems.length; } else { selected = E.clip(selected + dir, 0, menuItems.length - 1); @@ -258,7 +257,7 @@ E.showMenu = (items?: Menu): MenuInstance => { }, } as SetUIArg<"updown">, dir => { - if (dir) l.move(settings.naturalScroll ? -dir : dir); + if (dir) l.move(S.naturalScroll ? -dir : dir); else l.select(); }); diff --git a/typescript/types/bangle_extensions.d.ts b/typescript/types/bangle_extensions.d.ts index e5d94d079..7dde51191 100644 --- a/typescript/types/bangle_extensions.d.ts +++ b/typescript/types/bangle_extensions.d.ts @@ -8,3 +8,5 @@ type BangleEvents = { ["#ondrag"]?: BangleHandler, ["#onstroke"]?: BangleHandler<(event: { xy: Uint8Array, stroke?: string }) => void>, }; + +declare var settings: {}; // settings is commonly used by apps, so declare it here to avoid overwriting it in boot/clkinfo/widgets/etc