From f70ccd5aea7d1343de8abc7402e07e37e0e6eb0d Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Fri, 22 Jul 2022 11:23:21 +0100 Subject: [PATCH] messages 0.48: When getting new message from the clock, only buzz once the messages app is loaded --- apps/messages/ChangeLog | 1 + apps/messages/app-newmessage.js | 5 +++++ apps/messages/app.js | 14 ++++++++++++-- apps/messages/lib.js | 17 +++++++---------- apps/messages/metadata.json | 3 ++- 5 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 apps/messages/app-newmessage.js diff --git a/apps/messages/ChangeLog b/apps/messages/ChangeLog index 2b3f6ef39..447ba29ae 100644 --- a/apps/messages/ChangeLog +++ b/apps/messages/ChangeLog @@ -61,3 +61,4 @@ 0.46: Add 'Vibrate Timer' option to set how long to vibrate for, and fix Repeat:off Fix message removal from widget bar (previously caused exception as .hide has been removed) 0.47: Add new Icons (Nextbike, Mattermost, etc.) +0.48: When getting new message from the clock, only buzz once the messages app is loaded diff --git a/apps/messages/app-newmessage.js b/apps/messages/app-newmessage.js new file mode 100644 index 000000000..328927c70 --- /dev/null +++ b/apps/messages/app-newmessage.js @@ -0,0 +1,5 @@ +/* Called when we have a new message when we're in the clock... +BUZZ_ON_NEW_MESSAGE is set so when messages.app.js loads it knows +that it should buzz */ +global.BUZZ_ON_NEW_MESSAGE = true; +eval(require("Storage").read("messages.app.js")); diff --git a/apps/messages/app.js b/apps/messages/app.js index 6b61740aa..6d5478b69 100644 --- a/apps/messages/app.js +++ b/apps/messages/app.js @@ -353,8 +353,18 @@ function checkMessages(options) { // we have >0 messages var newMessages = MESSAGES.filter(m=>m.new&&m.id!="music"); // If we have a new message, show it - if (options.showMsgIfUnread && newMessages.length) - return showMessage(newMessages[0].id); + if (options.showMsgIfUnread && newMessages.length) { + showMessage(newMessages[0].id); + // buzz after showMessage, so beingbusy during layout doesn't affect the buzz pattern + if (global.BUZZ_ON_NEW_MESSAGE) { + // this is set if we entered the messages app by loading `messages.new.js` + // ... but only buzz the first time we view a new message + global.BUZZ_ON_NEW_MESSAGE = false; + // messages.buzz respects quiet mode - no need to check here + WIDGETS.messages.buzz(newMessages[0].src); + } + return; + } // no new messages: show playing music? (only if we have playing music to show) if (options.openMusic && MESSAGES.some(m=>m.id=="music" && m.track && m.state=="play")) return showMessage('music'); diff --git a/apps/messages/lib.js b/apps/messages/lib.js index c7aa1fac4..8715bd154 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -68,23 +68,20 @@ exports.pushMessage = function(event) { if(quiet && quietNoAutOpn) { loadMessages = false; } - // first, buzz - if (!quiet && loadMessages && global.WIDGETS && WIDGETS.messages){ - WIDGETS.messages.buzz(event.src); - if(unlockWatch != false){ - Bangle.setLocked(false); - Bangle.setLCDPower(1); // turn screen on - } - } // after a delay load the app, to ensure we have all the messages if (exports.messageTimeout) clearTimeout(exports.messageTimeout); exports.messageTimeout = setTimeout(function() { exports.messageTimeout = undefined; // if we're in a clock or it's important, go straight to messages app if (loadMessages){ - return load("messages.app.js"); + if(!quiet && unlockWatch){ + Bangle.setLocked(false); + Bangle.setLCDPower(1); // turn screen on + } + // we will buzz when we enter the messages app + return load("messages.new.js"); } - if (!quiet && (!global.WIDGETS || !WIDGETS.messages)) return Bangle.buzz(); // no widgets - just buzz to let someone know + if (!quiet && (!global.WIDGETS || !WIDGETS.messages)) return Bangle.buzz(); // no widgets - just buzz once to let someone know if (global.WIDGETS && WIDGETS.messages) WIDGETS.messages.update(messages); }, 500); } diff --git a/apps/messages/metadata.json b/apps/messages/metadata.json index 79d7c59db..90abceabc 100644 --- a/apps/messages/metadata.json +++ b/apps/messages/metadata.json @@ -1,7 +1,7 @@ { "id": "messages", "name": "Messages", - "version": "0.47", + "version": "0.48", "description": "App to display notifications from iOS and Gadgetbridge/Android", "icon": "app.png", "type": "app", @@ -10,6 +10,7 @@ "readme": "README.md", "storage": [ {"name":"messages.app.js","url":"app.js"}, + {"name":"messages.new.js","url":"app-newmessage.js"}, {"name":"messages.settings.js","url":"settings.js"}, {"name":"messages.img","url":"app-icon.js","evaluate":true}, {"name":"messages.wid.js","url":"widget.js"},