From 306ccb3fe39df88fcabf6794f61cf86185b92bb9 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Fri, 8 Mar 2024 09:26:38 +0000 Subject: [PATCH] bthome 0.02: Fix double-button press if you press the next button within 30s (#3243) --- apps/bthome/ChangeLog | 1 + apps/bthome/boot.js | 12 +++++++----- apps/bthome/metadata.json | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/apps/bthome/ChangeLog b/apps/bthome/ChangeLog index 5560f00bc..01d23607d 100644 --- a/apps/bthome/ChangeLog +++ b/apps/bthome/ChangeLog @@ -1 +1,2 @@ 0.01: New App! +0.02: Fix double-button press if you press the next button within 30s (#3243) \ No newline at end of file diff --git a/apps/bthome/boot.js b/apps/bthome/boot.js index 9c02581fe..a95d9b5fe 100644 --- a/apps/bthome/boot.js +++ b/apps/bthome/boot.js @@ -19,12 +19,16 @@ Bangle.btHomeData = []; /* Global function to allow advertising BTHome adverts extras = array of extra data, see require("BTHome").getAdvertisement - can add {n:0/1/2} for different instances - options = { event : an event - advertise fast, and when connected + options = { + event : an event - advertise fast, and when connected } */ Bangle.btHome = function(extras, options) { options = options||{}; - if(extras) { // update with extras + // clear any existing events + Bangle.btHomeData.forEach(d => {if (d.type=="button_event") d.v="none";}); + // update with extras + if (extras) { extras.forEach(extra => { var n = Bangle.btHomeData.find(b=>b.type==extra.type && b.n==extra.n); if (n) Object.assign(n, extra); @@ -60,9 +64,7 @@ Bangle.btHome = function(extras, options) { if (Bangle.btHomeTimeout) clearTimeout(Bangle.btHomeTimeout); Bangle.btHomeTimeout = setTimeout(function() { delete Bangle.btHomeTimeout; - // clear events - Bangle.btHomeData.forEach(d => {if (d.type=="button_event") d.v="none";}); // update Bangle.btHome(); - },updateTimeout); + }, updateTimeout); }; diff --git a/apps/bthome/metadata.json b/apps/bthome/metadata.json index c2767b9cf..6fc4a17c2 100644 --- a/apps/bthome/metadata.json +++ b/apps/bthome/metadata.json @@ -1,7 +1,7 @@ { "id": "bthome", "name": "BTHome", "shortName":"BTHome", - "version":"0.01", + "version":"0.02", "description": "Allow your Bangle to advertise with BTHome and send events to Home Assistant via Bluetooth", "icon": "icon.png", "type": "app",