diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..69aa0ab3d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,9 @@ +Contributing to BangleApps +========================== + +https://github.com/espruino/BangleApps?tab=readme-ov-file#getting-started +has some links to tutorials on developing for Bangle.js. + +Please check out the Wiki to get an idea what sort of things +we'd like to see for contributed apps: https://github.com/espruino/BangleApps/wiki/App-Contribution + diff --git a/apps/bthome/ChangeLog b/apps/bthome/ChangeLog index f5ea96ca1..ca91e0f34 100644 --- a/apps/bthome/ChangeLog +++ b/apps/bthome/ChangeLog @@ -1,4 +1,5 @@ 0.01: New App! 0.02: Fix double-button press if you press the next button within 30s (#3243) 0.03: Cope with identical duplicate buttons (fix #3260) - Set 'n' for buttons in Bangle.btHomeData correctly (avoids adding extra buttons on end of advertising) \ No newline at end of file + Set 'n' for buttons in Bangle.btHomeData correctly (avoids adding extra buttons on end of advertising) +0.04: Fix duplicate button on edit->save \ No newline at end of file diff --git a/apps/bthome/metadata.json b/apps/bthome/metadata.json index acc1f5b39..1ccc19316 100644 --- a/apps/bthome/metadata.json +++ b/apps/bthome/metadata.json @@ -1,7 +1,7 @@ { "id": "bthome", "name": "BTHome", "shortName":"BTHome", - "version":"0.03", + "version":"0.04", "description": "Allow your Bangle to advertise with BTHome and send events to Home Assistant via Bluetooth", "icon": "icon.png", "type": "app", diff --git a/apps/bthome/settings.js b/apps/bthome/settings.js index 4c84d99de..1bdcb270d 100644 --- a/apps/bthome/settings.js +++ b/apps/bthome/settings.js @@ -1,7 +1,11 @@ (function(back) { - var settings = require("Storage").readJSON("bthome.json",1)||{}; - if (!(settings.buttons instanceof Array)) - settings.buttons = []; + var settings; + + function loadSettings() { + settings = require("Storage").readJSON("bthome.json",1)||{}; + if (!(settings.buttons instanceof Array)) + settings.buttons = []; + } function saveSettings() { require("Storage").writeJSON("bthome.json",settings) @@ -15,7 +19,10 @@ } var actions = ["press","double_press","triple_press","long_press","long_double_press","long_triple_press"]; var menu = { - "":{title:isNew ? /*LANG*/"New Button" : /*LANG*/"Edit Button", back:showMenu}, + "":{title:isNew ? /*LANG*/"New Button" : /*LANG*/"Edit Button", back: () => { + loadSettings(); // revert changes + showMenu(); + }}, /*LANG*/"Icon" : { value : "\0"+require("icons").getIcon(button.icon), onchange : () => { @@ -49,7 +56,7 @@ onchange : v => button.n=v }, /*LANG*/"Save" : () => { - settings.buttons.push(button); + if (isNew) settings.buttons.push(button); saveSettings(); showMenu(); } @@ -94,5 +101,7 @@ }); E.showMenu(menu); } + + loadSettings(); showMenu(); }) \ No newline at end of file diff --git a/core b/core index b4224cd34..1deedec58 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit b4224cd348304016dc42d5dda6501e4e95c6b5ce +Subproject commit 1deedec58cdb854da978e54f10e7e4755b35302e diff --git a/webtools b/webtools index 3a5543818..8150b3617 160000 --- a/webtools +++ b/webtools @@ -1 +1 @@ -Subproject commit 3a55438189240c0f40cf280128d663806d04a5be +Subproject commit 8150b3617766689ee77ce085c60926cc9040d6fb