forked from FOSS/BangleApps
Merge pull request #3354 from paul-arg/messagegui
[messagegui] fix: handle the unreadTimeout bettermaster
commit
370b93fadd
|
@ -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.
|
||||||
|
|
|
@ -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({
|
||||||
|
|
|
@ -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",
|
||||||
|
|
Loading…
Reference in New Issue