diff --git a/apps/messagegui/ChangeLog b/apps/messagegui/ChangeLog index 3f5ff70fd..36ec8191f 100644 --- a/apps/messagegui/ChangeLog +++ b/apps/messagegui/ChangeLog @@ -82,3 +82,4 @@ 0.58: Fast load messages without writing to flash Don't write messages to flash until the app closes 0.59: Ensure we do write messages if messages app can't be fast loaded (see #2373) +0.60: Fix saving of removal messages if UI not open diff --git a/apps/messagegui/lib.js b/apps/messagegui/lib.js index f9919c01c..57dc3c1e2 100644 --- a/apps/messagegui/lib.js +++ b/apps/messagegui/lib.js @@ -10,7 +10,15 @@ exports.listener = function(type, msg) { clearTimeout(exports.messageTimeout); delete exports.messageTimeout; } - if (msg.t==="remove") return; + if (msg.t==="remove") { + // we won't open the UI for removed messages, so make sure to delete it from flash + if (Bangle.MESSAGES) { + // we were waiting for exports.messageTimeout + require("messages").apply(msg, Bangle.MESSAGES); + if (!Bangle.MESSAGES.length) delete Bangle.MESSAGES; + } + return require("messages").save(msg); // always write removal to flash + } const appSettings = require("Storage").readJSON("messages.settings.json", 1) || {}; let loadMessages = (Bangle.CLOCK || event.important); @@ -26,12 +34,12 @@ exports.listener = function(type, msg) { require("messages").save(msg); } else { if (!Bangle.MESSAGES) Bangle.MESSAGES = []; - Bangle.MESSAGES.push(msg); + require("messages").apply(msg, Bangle.MESSAGES); + if (!Bangle.MESSAGES.length) delete Bangle.MESSAGES; } const saveToFlash = () => { // save messages from RAM to flash after all, if we decide not to launch app - if (!Bangle.MESSAGES) return; - Bangle.MESSAGES.forEach(m => require("messages").save(m)); + if (Bangle.MESSAGES) Bangle.MESSAGES.forEach(m => require("messages").save(m)); delete Bangle.MESSAGES; } msg.handled = true; @@ -50,6 +58,7 @@ exports.listener = function(type, msg) { if (exports.messageTimeout) clearTimeout(exports.messageTimeout); exports.messageTimeout = setTimeout(function() { delete exports.messageTimeout; + if (!Bangle.MESSAGES) return; // message was removed during the delay if (type!=="music") { if (!loadMessages) { // not opening the app, just buzz diff --git a/apps/messagegui/metadata.json b/apps/messagegui/metadata.json index 80b362551..5b1cb60c6 100644 --- a/apps/messagegui/metadata.json +++ b/apps/messagegui/metadata.json @@ -2,7 +2,7 @@ "id": "messagegui", "name": "Message UI", "shortName": "Messages", - "version": "0.59", + "version": "0.60", "description": "Default app to display notifications from iOS and Gadgetbridge/Android", "icon": "app.png", "type": "app",