Merge pull request #2872 from halemmerich/messagesoverlay

messagesoverlay - Use event based mechanism
pull/2885/head
Gordon Williams 2023-07-14 08:21:27 +01:00 committed by GitHub
commit a4632726a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 44 deletions

View File

@ -1,3 +1,4 @@
0.01: Initial fork from messages_light 0.01: Initial fork from messages_light
0.02: Fix touch/drag/swipe handlers not being restored correctly if a message is removed 0.02: Fix touch/drag/swipe handlers not being restored correctly if a message is removed
0.03: Scroll six lines per swipe, leaving the previous top/bottom row visible. 0.03: Scroll six lines per swipe, leaving the previous top/bottom row visible.
0.04: Use the event mechanism for getting messages

View File

@ -1,7 +1 @@
//override require to filter require("message") Bangle.on("message", (type, msg) => require("messagesoverlay").message(type, msg));
global.require_real=global.require;
global.require = (_require => file => {
if (file==="messages") file = "messagesoverlay";
return _require(file);
})(require);

View File

@ -1,15 +1,3 @@
/* MESSAGES is a list of:
{id:int,
src,
title,
subject,
body,
sender,
tel:string,
new:true // not read yet
}
*/
const ovrx = 10; const ovrx = 10;
const ovry = 10; const ovry = 10;
const ovrw = g.getWidth()-2*ovrx; const ovrw = g.getWidth()-2*ovrx;
@ -84,18 +72,8 @@ let manageEvent = function(ovr, event) {
if (!callInProgress && eventQueue[0] !== undefined && eventQueue[0].id == event.id) if (!callInProgress && eventQueue[0] !== undefined && eventQueue[0].id == event.id)
next(ovr); next(ovr);
else
else { eventQueue = [];
eventQueue.length = 0; // empty existing queue
eventQueue.forEach(element => {
if (element.id != event.id)
neweventQueue.push(element);
});
}
break;
case "musicstate":
case "musicinfo":
break; break;
} }
@ -453,8 +431,11 @@ let main = function(ovr, event) {
let ovr; let ovr;
exports.pushMessage = function(event) { exports.message = function(type, event) {
if( event.id=="music") return require_real("messages").pushMessage(event); // only handle some event types
if(!(type=="text" || type == "call")) return;
if(type=="text" && event.id == "nav") return;
if(event.handled) return;
bpp = 4; bpp = 4;
if (process.memory().free < 2000) bpp = 1; if (process.memory().free < 2000) bpp = 1;
@ -475,14 +456,6 @@ exports.pushMessage = function(event) {
ovr.theme = { fg:0, bg:1, fg2:1, bg2:0, fgH:1, bgH:0 }; ovr.theme = { fg:0, bg:1, fg2:1, bg2:0, fgH:1, bgH:0 };
main(ovr, event); main(ovr, event);
event.handled = true;
g = _g; g = _g;
}; };
//Call original message library
exports.clearAll = function() { return require_real("messages").clearAll();};
exports.getMessages = function() { return require_real("messages").getMessages();};
exports.status = function() { return require_real("messages").status();};
exports.buzz = function() { return require_real("messages").buzz(msgSrc);};
exports.stopBuzz = function() { return require_real("messages").stopBuzz();};

View File

@ -1,7 +1,7 @@
{ {
"id": "messagesoverlay", "id": "messagesoverlay",
"name": "Messages Overlay", "name": "Messages Overlay",
"version": "0.03", "version": "0.04",
"description": "An overlay based implementation of a messages UI (display notifications from iOS and Gadgetbridge/Android)", "description": "An overlay based implementation of a messages UI (display notifications from iOS and Gadgetbridge/Android)",
"icon": "app.png", "icon": "app.png",
"type": "bootloader", "type": "bootloader",
@ -11,7 +11,7 @@
"readme": "README.md", "readme": "README.md",
"storage": [ "storage": [
{"name":"messagesoverlay","url":"lib.js"}, {"name":"messagesoverlay","url":"lib.js"},
{"name":"messagesoverlay.boot.js","url":"boot.js"} {"name":"messagesoverlay.0.boot.js","url":"boot.js"}
], ],
"screenshots": [{"url":"screen_call.png"} ,{"url":"screen_message.png"} ] "screenshots": [{"url":"screen_call.png"} ,{"url":"screen_message.png"} ]
} }