From 3e83eaa6d8e28c6405dee4ce658cef230d1a7cf1 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 14 Mar 2024 10:19:35 +0000 Subject: [PATCH] widmessages 0.06: Fix bug that meant that only one widget was shown (now 3 unless changed in Settings->Apps->Messages->Widget messages) --- apps/widmessages/ChangeLog | 1 + apps/widmessages/metadata.json | 2 +- apps/widmessages/widget.js | 19 +++++++------------ 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/apps/widmessages/ChangeLog b/apps/widmessages/ChangeLog index 507d9c13b..314b1490c 100644 --- a/apps/widmessages/ChangeLog +++ b/apps/widmessages/ChangeLog @@ -4,3 +4,4 @@ 0.03: Fix messages not showing if UI auto-open is disabled 0.04: Now shows message icons again (#2416) 0.05: Match draw() API e.g. to allow wid_edit to alter this widget +0.06: Fix bug that meant that only one widget was shown (now 3 unless changed in Settings->Apps->Messages->Widget messages) \ No newline at end of file diff --git a/apps/widmessages/metadata.json b/apps/widmessages/metadata.json index f058beacc..436b77d3e 100644 --- a/apps/widmessages/metadata.json +++ b/apps/widmessages/metadata.json @@ -1,7 +1,7 @@ { "id": "widmessages", "name": "Message Widget", - "version": "0.05", + "version": "0.06", "description": "Widget showing new messages", "icon": "app.png", "type": "widget", diff --git a/apps/widmessages/widget.js b/apps/widmessages/widget.js index 357ca06e3..0351fbead 100644 --- a/apps/widmessages/widget.js +++ b/apps/widmessages/widget.js @@ -1,13 +1,5 @@ -(() => { - if ((require("Storage").readJSON("messages.settings.json", true) || {}).maxMessages===0) return; - - function filterMessages(msgs) { - return msgs.filter(msg => msg.new && msg.id != "music") - .map(m => m.src) // we only need this for icon/color - .filter((msg, i, arr) => arr.findIndex(nmsg => msg.src == nmsg.src) == i); - } - - // NOTE when adding a custom "essages" widget: +if ((require("Storage").readJSON("messages.settings.json", true) || {}).maxMessages!==0) { + // NOTE when adding a custom "messages" widget: // the name still needs to be "messages": the library calls WIDGETS["messages'].hide()/show() // see e.g. widmsggrid WIDGETS["messages"] = { @@ -48,6 +40,9 @@ if (this.hidden) return; if (type==="music") return; if (msg.id && !msg.new && msg.t!=="remove") return; + let filterMessages = msgs => msgs.filter(msg => msg.new && msg.id != "music") + .filter((msg, i, arr) => arr.findIndex(nmsg => msg.src == nmsg.src) == i) // only include one of each type + .map(m => m.src); // we only need this for icon/color; this.srcs = filterMessages(require("messages").getMessages(msg)); const settings = Object.assign({maxMessages:3},require('Storage').readJSON("messages.settings.json", true) || {}); this.width = 24 * E.clip(this.srcs.length, 0, settings.maxMessages); @@ -66,11 +61,11 @@ Bangle.drawWidgets(); } }, show() { - delete this.hidden + delete this.hidden; this.onMsg("show", {}); // reload messages+redraw } }; Bangle.on("message", WIDGETS["messages"].onMsg.bind(WIDGETS["messages"])); WIDGETS["messages"].onMsg("init", {}); // abuse type="init" to prevent Bangle.drawWidgets(); -})(); +} \ No newline at end of file