From 11fdf6320491f08415ca6d9235530630e1ca4c89 Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.comā©> Date: Mon, 3 Feb 2025 00:00:19 +0100 Subject: [PATCH] messagegui: improve logic re what messages to be marked `new=false` --- apps/messagegui/app.js | 48 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/apps/messagegui/app.js b/apps/messagegui/app.js index 7a6588e69b..243b96e8f3 100644 --- a/apps/messagegui/app.js +++ b/apps/messagegui/app.js @@ -302,7 +302,6 @@ function showMessagesScroller(msg, persist) { for (let i=0 ; ie==scrollIdx)!==undefined ? g.theme.bg2 : g.theme.bg). setColor(titleLines.find(e=>e==scrollIdx)!==undefined ? g.theme.fg2 : g.theme.fg). clearRect(r); g.setFont(bodyFont).setFontAlign(0,-1).drawString(allLines[scrollIdx], r.x+r.w/2, r.y); + if (scrollIdxshownIdxLast) {shownIdxLast = scrollIdx;} if (!persist) {resetReloadTimeout();} }, select : function(scrollIdx, touch) { WU.show(); - clearBtnHandler(); for (let i=firstTitleLinePerMsg.length-1; i>=0 ; i--) { if (scrollIdx>=firstTitleLinePerMsg[i]) { - if (!touch || touch.type===0) {showMessageRouter(MESSAGES[i], true, - "overview"); return;} - if (touch.type == 2) {showMessageSettings(MESSAGES[i]);} + if (!touch || touch.type===0) { + showMessageRouter(MESSAGES[i], true, "overview") + } else if (touch.type == 2) { + showMessageSettings(MESSAGES[i]); + } break; } } + clearBtnHandler(); + updateReadMessages(); } }); + // If Bangle.js 2 add an external select hw button handler. let btnHandler = ((2===process.env.HWVERSION) && (setWatch(()=>{ Bangle.emit("drag", {dy:0}); // Compatibility with `kineticscroll`, stopping the scroller so it doesn't continue scrolling when the `showMessageOverview` screen is loaded. @@ -360,6 +369,35 @@ function showMessagesScroller(msg, persist) { function clearBtnHandler() { if (btnHandler) {clearWatch(btnHandler); btnHandler=undefined;} } + + function updateReadMessages() { + let shownMsgIdxFirst, shownMsgIdxLast; + const LINES_PER_SCREEN = APP_RECT.h/FONT_HEIGHT; + //print(firstTitleLinePerMsg) + //print(shownIdxFirst, shownIdxLast) + + for (let i=0; ifirstTitleLinePerMsg[i]) { + shownMsgIdxFirst = i; + } + + if (shownIdxLast>=firstTitleLinePerMsg[i+1] && shownIdxLast-LINES_PER_SCREEN