2.2 KiB
Messages library
This library handles the passing of messages. It can stores a list of messages and allows them to be retrieved by other apps.
Example
Assuming you are using GadgetBridge and "overlay notifications":
- Gadgetbridge sends an event to your watch for an incoming message
- The
androidapp parses the message, and callsrequire("messages").pushMessage({/** the message */}) require("messages")callsBangle.emit("message", "text", {/** the message */})- Overlay Notifications shows the message in an overlay, and marks it as
handled - The default UI app (Message UI,
messagegui) sees the event is marked ashandled, so does nothing. - The default widget (
widmessages) does nothing withhandled, and shows a notification icon. - You tap the notification, in order to open the full GUI: Overlay Notifications
calls
require("messages").openGUI({/** the message */}) openGUIcallsrequire("messagegui").open(/** copy of the message */).- The
messageguilibrary loads the Message UI app.
Events
When a new message arrives, a "message" event is emitted, you can listen for
it like this:
myMessageListener = Bangle.on("message", (type, message)=>{
if (message.handled) return; // another app already handled this message
// <type> is one of "text", "call", "alarm", "map", or "music"
// see `messages/lib.js` for possible <message> formats
// message.t could be "add", "modify" or "remove"
E.showMessage(`${message.title}\n${message.body}`, `${message.t} ${type} message`);
// You can prevent the default `message` app from loading by setting `message.handled = true`:
message.handled = true;
});
Apps can launch the currently installed Message GUI by calling require("messages").openGUI().
If you want to write your own GUI, it should include a library called messagegui
with a method called open that will cause it to be opened, with the
optionally supplied message. See apps/messagegui/lib.js for an example.
Requests
Please file any issues on https://github.com/espruino/BangleApps/issues/new?title=[messages]%20library
Creator
Gordon Williams
Contributors
Attributions
Icons used in this app are from https://icons8.com