From 71b5dafaa7e4ab1173e77442ca67ee1fe618c8d1 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Wed, 12 Jul 2023 19:59:04 +0200 Subject: [PATCH] messagesoverlay - Use event based mechanism --- apps/messagesoverlay/ChangeLog | 1 + apps/messagesoverlay/boot.js | 8 +----- apps/messagesoverlay/lib.js | 42 +++++------------------------- apps/messagesoverlay/metadata.json | 4 +-- 4 files changed, 11 insertions(+), 44 deletions(-) diff --git a/apps/messagesoverlay/ChangeLog b/apps/messagesoverlay/ChangeLog index 0a2cf27b0..832c1d45c 100644 --- a/apps/messagesoverlay/ChangeLog +++ b/apps/messagesoverlay/ChangeLog @@ -1,3 +1,4 @@ 0.01: Initial fork from messages_light 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.04: Use the event mechanism for getting messages diff --git a/apps/messagesoverlay/boot.js b/apps/messagesoverlay/boot.js index 7731d608a..778f42339 100644 --- a/apps/messagesoverlay/boot.js +++ b/apps/messagesoverlay/boot.js @@ -1,7 +1 @@ -//override require to filter require("message") -global.require_real=global.require; -global.require = (_require => file => { - if (file==="messages") file = "messagesoverlay"; - return _require(file); -})(require); - +Bangle.on("message", (type, msg) => require("messagesoverlay").message(type, msg)); \ No newline at end of file diff --git a/apps/messagesoverlay/lib.js b/apps/messagesoverlay/lib.js index 5587fce19..ed5a4d9b9 100644 --- a/apps/messagesoverlay/lib.js +++ b/apps/messagesoverlay/lib.js @@ -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 ovry = 10; 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) next(ovr); - - else { - eventQueue.length = 0; // empty existing queue - eventQueue.forEach(element => { - if (element.id != event.id) - neweventQueue.push(element); - }); - } - - break; - case "musicstate": - case "musicinfo": + else + eventQueue = []; break; } @@ -453,8 +431,10 @@ let main = function(ovr, event) { let ovr; -exports.pushMessage = function(event) { - if( event.id=="music") return require_real("messages").pushMessage(event); +exports.message = function(type, event) { + // only handle some event types + if(!(type=="text" || type == "call")) return; + if(event.handled) return; bpp = 4; if (process.memory().free < 2000) bpp = 1; @@ -475,14 +455,6 @@ exports.pushMessage = function(event) { ovr.theme = { fg:0, bg:1, fg2:1, bg2:0, fgH:1, bgH:0 }; main(ovr, event); - + event.handled = true; 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();}; diff --git a/apps/messagesoverlay/metadata.json b/apps/messagesoverlay/metadata.json index be80150e7..500de5f66 100644 --- a/apps/messagesoverlay/metadata.json +++ b/apps/messagesoverlay/metadata.json @@ -1,7 +1,7 @@ { "id": "messagesoverlay", "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)", "icon": "app.png", "type": "bootloader", @@ -11,7 +11,7 @@ "readme": "README.md", "storage": [ {"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"} ] }