1
0
Fork 0

Merge pull request #3354 from paul-arg/messagegui

[messagegui] fix: handle the unreadTimeout better
master
Gordon Williams 2024-04-22 09:59:21 +01:00 committed by GitHub
commit 370b93fadd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 14 deletions

View File

@ -105,3 +105,4 @@
0.76: Swipe up/down on a shown message to show the next newer/older message. 0.76: Swipe up/down on a shown message to show the next newer/older message.
0.77: Messages can now use international fonts if they are installed 0.77: Messages can now use international fonts if they are installed
0.78: Fix: When user taps on a new message, clear the unread timeout 0.78: Fix: When user taps on a new message, clear the unread timeout
0.79: Fix: Reset the unread timeout each time a new message is shown. When the message is read from user input, do not set an unread timeout.

View File

@ -87,7 +87,7 @@ var onMessagesModified = function(type,msg) {
} }
if (msg && msg.id=="nav" && msg.t=="modify" && active!="map") if (msg && msg.id=="nav" && msg.t=="modify" && active!="map")
return; // don't show an updated nav message if we're just in the menu return; // don't show an updated nav message if we're just in the menu
showMessage(msg&&msg.id); showMessage(msg&&msg.id, false);
}; };
Bangle.on("message", onMessagesModified); Bangle.on("message", onMessagesModified);
@ -254,16 +254,16 @@ function showMessageScroller(msg) {
g.setFont(bodyFont).setFontAlign(0,-1).drawString(lines[idx], r.x+r.w/2, r.y); g.setFont(bodyFont).setFontAlign(0,-1).drawString(lines[idx], r.x+r.w/2, r.y);
}, select : function(idx) { }, select : function(idx) {
if (idx>=lines.length-2) if (idx>=lines.length-2)
showMessage(msg.id); showMessage(msg.id, true);
}, },
back : () => showMessage(msg.id) back : () => showMessage(msg.id, true)
}); });
} }
function showMessageSettings(msg) { function showMessageSettings(msg) {
active = "settings"; active = "settings";
var menu = {"":{"title":/*LANG*/"Message"}, var menu = {"":{"title":/*LANG*/"Message"},
"< Back" : () => showMessage(msg.id), "< Back" : () => showMessage(msg.id, true),
/*LANG*/"View Message" : () => { /*LANG*/"View Message" : () => {
showMessageScroller(msg); showMessageScroller(msg);
}, },
@ -304,7 +304,8 @@ function showMessageSettings(msg) {
E.showMenu(menu); E.showMenu(menu);
} }
function showMessage(msgid) { function showMessage(msgid, persist) {
if(!persist) resetReloadTimeout();
let idx = MESSAGES.findIndex(m=>m.id==msgid); let idx = MESSAGES.findIndex(m=>m.id==msgid);
var msg = MESSAGES[idx]; var msg = MESSAGES[idx];
if (updateLabelsInterval) { if (updateLabelsInterval) {
@ -409,8 +410,8 @@ function showMessage(msgid) {
Bangle.swipeHandler = (lr,ud) => { Bangle.swipeHandler = (lr,ud) => {
if (lr>0 && posHandler) posHandler(); if (lr>0 && posHandler) posHandler();
if (lr<0 && negHandler) negHandler(); if (lr<0 && negHandler) negHandler();
if (ud>0 && idx<MESSAGES.length-1) showMessage(MESSAGES[idx+1].id); if (ud>0 && idx<MESSAGES.length-1) showMessage(MESSAGES[idx+1].id, true);
if (ud<0 && idx>0) showMessage(MESSAGES[idx-1].id); if (ud<0 && idx>0) showMessage(MESSAGES[idx-1].id, true);
}; };
Bangle.on("swipe", Bangle.swipeHandler); Bangle.on("swipe", Bangle.swipeHandler);
g.reset().clearRect(Bangle.appRect); g.reset().clearRect(Bangle.appRect);
@ -447,7 +448,7 @@ function checkMessages(options) {
// If we have a new message, show it // If we have a new message, show it
if (options.showMsgIfUnread && newMessages.length) { if (options.showMsgIfUnread && newMessages.length) {
delete newMessages[0].show; // stop us getting stuck here if we're called a second time delete newMessages[0].show; // stop us getting stuck here if we're called a second time
showMessage(newMessages[0].id); showMessage(newMessages[0].id, false);
// buzz after showMessage, so being busy during layout doesn't affect the buzz pattern // buzz after showMessage, so being busy during layout doesn't affect the buzz pattern
if (global.BUZZ_ON_NEW_MESSAGE) { if (global.BUZZ_ON_NEW_MESSAGE) {
// this is set if we entered the messages app by loading `messagegui.new.js` // this is set if we entered the messages app by loading `messagegui.new.js`
@ -460,7 +461,7 @@ function checkMessages(options) {
} }
// no new messages: show playing music? Only if we have playing music, or state=="show" (set by messagesmusic) // no new messages: show playing music? Only if we have playing music, or state=="show" (set by messagesmusic)
if (options.openMusic && MESSAGES.some(m=>m.id=="music" && ((m.track && m.state=="play") || m.state=="show"))) if (options.openMusic && MESSAGES.some(m=>m.id=="music" && ((m.track && m.state=="play") || m.state=="show")))
return showMessage('music'); return showMessage('music', true);
// no new messages - go to clock? // no new messages - go to clock?
if (options.clockIfAllRead && newMessages.length==0) if (options.clockIfAllRead && newMessages.length==0)
return load(); return load();
@ -509,7 +510,7 @@ function checkMessages(options) {
}, },
select : idx => { select : idx => {
if (idx < MESSAGES.length) if (idx < MESSAGES.length)
showMessage(MESSAGES[idx].id); showMessage(MESSAGES[idx].id, true);
}, },
back : () => load() back : () => load()
}); });
@ -522,6 +523,13 @@ function cancelReloadTimeout() {
unreadTimeout = undefined; unreadTimeout = undefined;
} }
function resetReloadTimeout(){
cancelReloadTimeout();
if (!isFinite(settings.unreadTimeout)) settings.unreadTimeout=60;
if (settings.unreadTimeout)
unreadTimeout = setTimeout(load, settings.unreadTimeout*1000);
}
g.clear(); g.clear();
Bangle.loadWidgets(); Bangle.loadWidgets();
@ -529,9 +537,6 @@ require("messages").toggleWidget(false);
Bangle.drawWidgets(); Bangle.drawWidgets();
setTimeout(() => { setTimeout(() => {
if (!isFinite(settings.unreadTimeout)) settings.unreadTimeout=60;
if (settings.unreadTimeout)
unreadTimeout = setTimeout(load, settings.unreadTimeout*1000);
// only openMusic on launch if music is new, or state=="show" (set by messagesmusic) // only openMusic on launch if music is new, or state=="show" (set by messagesmusic)
var musicMsg = MESSAGES.find(m => m.id === "music"); var musicMsg = MESSAGES.find(m => m.id === "music");
checkMessages({ checkMessages({

View File

@ -2,7 +2,7 @@
"id": "messagegui", "id": "messagegui",
"name": "Message UI", "name": "Message UI",
"shortName": "Messages", "shortName": "Messages",
"version": "0.78", "version": "0.79",
"description": "Default app to display notifications from iOS and Gadgetbridge/Android", "description": "Default app to display notifications from iOS and Gadgetbridge/Android",
"icon": "app.png", "icon": "app.png",
"type": "app", "type": "app",