From 4719fada2843f1c8d6ae36d8d59d0fb95318d9b5 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Tue, 23 Nov 2021 16:28:34 +0000 Subject: [PATCH] Android Remove messages on disconnect, Fix music control (ref #909) --- apps.json | 10 +++++----- apps/android/ChangeLog | 2 ++ apps/android/boot.js | 11 +++++++++-- apps/files/files-icon.js | 2 +- apps/ios/ChangeLog | 1 + apps/ios/boot.js | 3 ++- apps/messages/ChangeLog | 1 + apps/messages/app.js | 3 ++- apps/messages/lib.js | 19 +++++++++++++++++-- apps/messages/widget.js | 8 ++++++-- core | 2 +- 11 files changed, 47 insertions(+), 15 deletions(-) diff --git a/apps.json b/apps.json index 68d7abc13..d8f6db3c3 100644 --- a/apps.json +++ b/apps.json @@ -32,7 +32,7 @@ { "id": "messages", "name": "Messages", - "version": "0.03", + "version": "0.04", "description": "App to display notifications from iOS and Gadgetbridge", "icon": "app.png", "type": "app", @@ -50,7 +50,7 @@ { "id": "android", "name": "Android Integration", - "version": "0.01", + "version": "0.02", "description": "(BETA) App to display notifications from Gadgetbridge on Android. This will eventually replace the Gadgetbridge widget.", "icon": "app.png", "tags": "tool,system,messages,notifications", @@ -61,12 +61,12 @@ {"name":"android.img","url":"app-icon.js","evaluate":true}, {"name":"android.boot.js","url":"boot.js"} ], - "sortorder": -9 + "sortorder": -8 }, { "id": "ios", "name": "iOS Integration", - "version": "0.01", + "version": "0.02", "description": "(BETA) App to display notifications from iOS devices", "icon": "app.png", "tags": "tool,system,ios,apple,messages,notifications", @@ -77,7 +77,7 @@ {"name":"ios.img","url":"app-icon.js","evaluate":true}, {"name":"ios.boot.js","url":"boot.js"} ], - "sortorder": -9 + "sortorder": -8 }, { "id": "health", diff --git a/apps/android/ChangeLog b/apps/android/ChangeLog index 5560f00bc..e881c9ec2 100644 --- a/apps/android/ChangeLog +++ b/apps/android/ChangeLog @@ -1 +1,3 @@ 0.01: New App! +0.02: Remove messages on disconnect + Fix music control diff --git a/apps/android/boot.js b/apps/android/boot.js index dd19f9500..1793dc895 100644 --- a/apps/android/boot.js +++ b/apps/android/boot.js @@ -33,7 +33,13 @@ // {t:"musicinfo", artist,album,track,dur,c(track count),n(track num} "musicinfo" : function() { require("messages").pushMessage(Object.assign(event, {t:"modify",id:"music",title:"Music"})); - } + }, + // {"t":"call","cmd":"incoming/end","name":"Bob","number":"12421312"}) + "notify" : function() { + event.t=t.cmd=="incoming"?"add":"remove"; + event.id="call"; + require("messages").pushMessage(event); + }, }; var h = HANDLERS[event.t]; if (h) h(); else console.log("GB Unknown",event); @@ -42,6 +48,7 @@ // Battery monitor function sendBattery() { gbSend({ t: "status", bat: E.getBattery() }); } NRF.on("connect", () => setTimeout(sendBattery, 2000)); + NRF.on("disconnect", () => require("messages").clearAll()); // remove all messages on disconnect setInterval(sendBattery, 10*60*1000); // Health tracking Bangle.on('health', health=>{ @@ -50,6 +57,6 @@ // Music control Bangle.musicControl = cmd => { // play/pause/next/previous/volumeup/volumedown - gbSend({ t: "music", m:cmd }); + gbSend({ t: "music", n:cmd }); } })(); diff --git a/apps/files/files-icon.js b/apps/files/files-icon.js index 7e55db9e0..7f7ea4d0c 100644 --- a/apps/files/files-icon.js +++ b/apps/files/files-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwghC/AEkIxAABwUiAAwKBC6+AC6ERiIXDGBAXPGA8JzIAByQXKGA4XUA4eDmYAGJwQXVxEizAXPIgIXDwWZC6uIxIwCC6eIGAQX/C9i/FC5mCCw0yC5wAMC/4Xnx//ABf4C/Xzdw8zn4XkL/5f/L+oUDI6YX3AB4XeAH4AdA==")) +require("heatshrink").decompress(atob("mEw4cA///7c0AYMXlm3gf42s1yvb5xT/ABdJkmStu27YCCtMkCKOACJdm7YRCyARQyQRLBwIRDoARTgVLtu3K4tJl4RQkvpCJdbtwRBkm5CKGZCKGTCKGSsgR/R4gRHpIMBCInaCJIIBARAR/CJtPB5FLCI1KEhMSCLN//4AE/QRbI/5H/CI4PCGpwRXp4RIpZFDCIQiJAQIRWAH4AGA")) diff --git a/apps/ios/ChangeLog b/apps/ios/ChangeLog index 5560f00bc..ef674102a 100644 --- a/apps/ios/ChangeLog +++ b/apps/ios/ChangeLog @@ -1 +1,2 @@ 0.01: New App! +0.02: Remove messages on disconnect diff --git a/apps/ios/boot.js b/apps/ios/boot.js index c3ccb9275..54bd0b1c2 100644 --- a/apps/ios/boot.js +++ b/apps/ios/boot.js @@ -95,7 +95,8 @@ E.on('AMS',a=>{ Bangle.musicControl = cmd => { // play, pause, playpause, next, prev, volup, voldown, repeat, shuffle, skipforward, skipback, like, dislike, bookmark NRF.amsCommand(cmd); -} +}; +NRF.on("disconnect", () => require("messages").clearAll()); // remove all messages on disconnect /* // For testing... diff --git a/apps/messages/ChangeLog b/apps/messages/ChangeLog index 4f7df3859..28906d608 100644 --- a/apps/messages/ChangeLog +++ b/apps/messages/ChangeLog @@ -1,3 +1,4 @@ 0.01: New App! 0.02: Add 'messages' library 0.03: Fixes for Bangle.js 1 +0.04: Add require("messages").clearAll() diff --git a/apps/messages/app.js b/apps/messages/app.js index 987d9184b..b12fa7f1f 100644 --- a/apps/messages/app.js +++ b/apps/messages/app.js @@ -16,7 +16,8 @@ {"t":"add","id":1575479849,"src":"Hangouts","title":"A Name","body":"message contents"} // maps {"t":"add","id":1,"src":"Maps","title":"0 yd - High St","body":"Campton - 11:48 ETA","img":"GhqBAAAMAAAHgAAD8AAB/gAA/8AAf/gAP/8AH//gD/98B//Pg/4B8f8Afv+PP//n3/f5//j+f/wfn/4D5/8Aef+AD//AAf/gAD/wAAf4AAD8AAAeAAADAAA="} - +// call +{"t:"add","id:"call","name":"Bob","number":"12421312"} */ var Layout = require("Layout"); diff --git a/apps/messages/lib.js b/apps/messages/lib.js index f3ea242e5..4bda60e65 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -28,10 +28,25 @@ exports.pushMessage = function(event) { // otherwise load after a delay, to ensure we have all the messages if (exports.messageTimeout) clearTimeout(exports.messageTimeout); exports.messageTimeout = setTimeout(function() { - exports.messageTimeout = undefined; + exports.messageTimeout = undefined; // if we're in a clock or it's important, go straight to messages app if (Bangle.CLOCK || event.important) return load("messages.app.js"); if (!global.WIDGETS || !WIDGETS.messages) return Bangle.buzz(); // no widgets - just buzz to let someone know - WIDGETS.messages.newMessage(); + WIDGETS.messages.show(); }, 500); } +exports.clearAll = function(event) { + var messages, inApp = "undefined"!=typeof MESSAGES; + if (inApp) { + MESSAGES = []; + messages = MESSAGES; // we're in an app that has already loaded messages + } else // no app - empty messages + messages = []; + // Save all messages + require("Storage").writeJSON("messages.json",messages); + // update app if in app + if (inApp) return onMessagesModified(); + // if we have a widget, update it + if (global.WIDGETS && WIDGETS.messages) + WIDGETS.messages.hide(); +} diff --git a/apps/messages/widget.js b/apps/messages/widget.js index eda4a85a5..c40e9aa05 100644 --- a/apps/messages/widget.js +++ b/apps/messages/widget.js @@ -10,11 +10,15 @@ WIDGETS["messages"]={area:"tl",width:0,draw:function() { Bangle.buzz(); // buzz every 4 seconds } setTimeout(()=>WIDGETS["messages"].draw(), 1000); -},newMessage:function() { +},show:function() { WIDGETS["messages"].t=Date.now(); // first time WIDGETS["messages"].l=Date.now()-10000; // last buzz - if (WIDGETS["messages"].c!==undefined) return; // already called WIDGETS["messages"].width=64; Bangle.drawWidgets(); Bangle.setLCDPower(1);// turns screen on +},hide:function() { + delete WIDGETS["messages"].t; + delete WIDGETS["messages"].l; + WIDGETS["messages"].width=0; + Bangle.drawWidgets(); }}; diff --git a/core b/core index 905adb6ce..996299a28 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 905adb6ce4ae002e943a14d1724744e0c1326277 +Subproject commit 996299a285c95136ad0049febb5399ee837c42d3