messages: emit "message" events
parent
d3a5f4cdb2
commit
fb10f8125e
|
|
@ -66,4 +66,5 @@
|
||||||
0.50: Add `getMessages` and `status` functions to library
|
0.50: Add `getMessages` and `status` functions to library
|
||||||
Option to disable auto-open of messages
|
Option to disable auto-open of messages
|
||||||
Option to make message icons monochrome (not colored)
|
Option to make message icons monochrome (not colored)
|
||||||
messages widget buzz now returns a promise
|
messages widget buzz now returns a promise
|
||||||
|
0.51: Emit "message events"
|
||||||
|
|
@ -56,6 +56,19 @@ _2. What the notify icon looks like (it's touchable on Bangle.js2!)_
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
## Events (for app/widget developers)
|
||||||
|
|
||||||
|
When a new message arrives, a `"message"` event is emitted, you can listen for
|
||||||
|
it like this:
|
||||||
|
|
||||||
|
```js
|
||||||
|
myMessageListener = Bangle.on("message", (type, message)=>{
|
||||||
|
// <type> is one of "text", "call", "alarm", "map", or "music"
|
||||||
|
// see `messages/lib.js` for possible <message> formats
|
||||||
|
E.showMessage(`${message.title}\n${message.body}`, `${message.t} ${type} message`);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Requests
|
## Requests
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ function openMusic() {
|
||||||
/* Push a new message onto messages queue, event is:
|
/* Push a new message onto messages queue, event is:
|
||||||
{t:"add",id:int, src,title,subject,body,sender,tel, important:bool, new:bool}
|
{t:"add",id:int, src,title,subject,body,sender,tel, important:bool, new:bool}
|
||||||
{t:"add",id:int, id:"music", state, artist, track, etc} // add new
|
{t:"add",id:int, id:"music", state, artist, track, etc} // add new
|
||||||
{t:"remove-",id:int} // remove
|
{t:"remove",id:int} // remove
|
||||||
{t:"modify",id:int, title:string} // modified
|
{t:"modify",id:int, title:string} // modified
|
||||||
*/
|
*/
|
||||||
exports.pushMessage = function(event) {
|
exports.pushMessage = function(event) {
|
||||||
|
|
@ -31,11 +31,18 @@ exports.pushMessage = function(event) {
|
||||||
else Object.assign(messages[mIdx], event);
|
else Object.assign(messages[mIdx], event);
|
||||||
if (event.id=="music" && messages[mIdx].state=="play") {
|
if (event.id=="music" && messages[mIdx].state=="play") {
|
||||||
messages[mIdx].new = true; // new track, or playback (re)started
|
messages[mIdx].new = true; // new track, or playback (re)started
|
||||||
|
type = 'music';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
require("Storage").writeJSON("messages.json",messages);
|
require("Storage").writeJSON("messages.json",messages);
|
||||||
|
var message = mIdx<0 ? {id:event.id, t:'remove'} : messages[mIdx];
|
||||||
// if in app, process immediately
|
// if in app, process immediately
|
||||||
if ("undefined"!= typeof MESSAGES) return onMessagesModified(mIdx<0 ? {id:event.id} : messages[mIdx]);
|
if ("undefined"!=typeof MESSAGES) return onMessagesModified(message);
|
||||||
|
// emit message event
|
||||||
|
var type = 'text';
|
||||||
|
if (["call", "music", "map"].includes(message.id)) type = message.id;
|
||||||
|
if (message.src && message.src.toLowerCase().startsWith("alarm")) type = "alarm";
|
||||||
|
Bangle.emit("message", type, message);
|
||||||
// update the widget icons shown
|
// update the widget icons shown
|
||||||
if (global.WIDGETS && WIDGETS.messages) WIDGETS.messages.update(messages,true);
|
if (global.WIDGETS && WIDGETS.messages) WIDGETS.messages.update(messages,true);
|
||||||
// if no new messages now, make sure we don't load the messages app
|
// if no new messages now, make sure we don't load the messages app
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "messages",
|
"id": "messages",
|
||||||
"name": "Messages",
|
"name": "Messages",
|
||||||
"version": "0.50",
|
"version": "0.51",
|
||||||
"description": "App to display notifications from iOS and Gadgetbridge/Android",
|
"description": "App to display notifications from iOS and Gadgetbridge/Android",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue