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
android
app 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 */})
openGUI
callsrequire("messagegui").open(/** copy of the message */)
.- The
messagegui
library 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