From 6cca01db0b78ff4e56c6143bf9adf581f0fb01ef Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Tue, 9 May 2023 07:38:56 +0100 Subject: [PATCH] widhid: only register swipe/activation handler when connected --- apps/widhid/wid.js | 11 ++++++++--- apps/widhid/wid.ts | 14 ++++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/apps/widhid/wid.js b/apps/widhid/wid.js index 13ccddd5f..68da78906 100644 --- a/apps/widhid/wid.js +++ b/apps/widhid/wid.js @@ -9,7 +9,7 @@ var dragging = false; var activeTimeout; var waitForRelease = true; - Bangle.on("swipe", function (_lr, ud) { + var onSwipe = (function (_lr, ud) { if (Bangle.CLKINFO_FOCUS) return; if (!activeTimeout && ud > 0) { @@ -95,6 +95,8 @@ redraw(); }, 3000); }; + var redraw = function () { return setTimeout(Bangle.drawWidgets, 50); }; + var connected = NRF.getSecurityStatus().connected; WIDGETS["hid"] = { area: "tr", sortorder: -20, @@ -105,15 +107,18 @@ ? require("heatshrink").decompress(atob("jEYxH+AEfH44XXAAYXXDKIXZDYp3pC/6KHUMwWHC/4XvUy4YGdqoA/AFoA==")) : require("heatshrink").decompress(atob("jEYxH+AEcdjoXXAAYXXDKIXZDYp3pC/6KHUMwWHC/4XvUy4YGdqoA/AFoA==")), this.x + 2, this.y + 2); }, - width: NRF.getSecurityStatus().connected ? 24 : 0, + width: connected ? 24 : 0, }; - var redraw = function () { return setTimeout(Bangle.drawWidgets, 50); }; + if (connected) + Bangle.on("swipe", onSwipe); NRF.on("connect", function () { WIDGETS["hid"].width = 24; + Bangle.on("swipe", onSwipe); redraw(); }); NRF.on("disconnect", function () { WIDGETS["hid"].width = 0; + Bangle.removeListener("swipe", onSwipe); redraw(); }); var sendHid = function (code) { diff --git a/apps/widhid/wid.ts b/apps/widhid/wid.ts index ed6c7b02e..3235f48b5 100644 --- a/apps/widhid/wid.ts +++ b/apps/widhid/wid.ts @@ -11,14 +11,14 @@ let activeTimeout: number | undefined; let waitForRelease = true; - Bangle.on("swipe", (_lr, ud) => { + const onSwipe = ((_lr, ud) => { if((Bangle as BangleExt).CLKINFO_FOCUS) return; if(!activeTimeout && ud! > 0){ listen(); Bangle.buzz(20); } - }); + }) satisfies SwipeCallback; const onDrag = (e => { if((Bangle as BangleExt).CLKINFO_FOCUS) return; @@ -96,6 +96,9 @@ }, 3000); }; + const redraw = () => setTimeout(Bangle.drawWidgets, 50); + + const connected = NRF.getSecurityStatus().connected; WIDGETS["hid"] = { area: "tr", sortorder: -20, @@ -109,17 +112,20 @@ this.y! + 2 ); }, - width: NRF.getSecurityStatus().connected ? 24 : 0, + width: connected ? 24 : 0, }; - const redraw = () => setTimeout(Bangle.drawWidgets, 50); + if(connected) + Bangle.on("swipe", onSwipe); NRF.on("connect", () => { WIDGETS["hid"]!.width = 24; + Bangle.on("swipe", onSwipe); redraw(); }); NRF.on("disconnect", () => { WIDGETS["hid"]!.width = 0; + Bangle.removeListener("swipe", onSwipe); redraw(); });