Bangle_MessageCenter/messagegui.lib.js

35 lines
1.3 KiB
JavaScript

const loadWillReset = () => Bangle.load === load || !Bangle.uiRemove;
exports.messageListener = function(type, msg) {
let inApp = false;
if (msg.handled) return;
if (global.__FILE__ === "messagecenter.app.js") inApp = true;
if (!Bangle.MESSAGES || !Bangle.MESSAGES.length) Bangle.MESSAGES = require("messages").getMessages(msg);
msg.show = true;
msg.type = type;
if (msg.id === "call" && msg.t === "remove" && msg.cmd != "end") {
msg.t = "modify"; // not sure why messages module puts everything as remove except for "incoming"
msg.new = true;
}
if (msg.t === "add") {
require("messages").apply(msg, Bangle.MESSAGES);
} else if (msg.t === "modify") {
Bangle.MESSAGES = Bangle.MESSAGES.filter(m => m.id != msg.id); // remove old version of message
Bangle.MESSAGES.unshift(msg); // put modified message at start of list
} else {
Bangle.MESSAGES.unshift(msg); // add new message to start of list
}
if (!inApp) {
if (msg.t === "remove") {
Bangle.MESSAGES = Bangle.MESSAGES.filter(m => m.id != msg.id);
require("messages").write(Bangle.MESSAGES); // write removal to flash
return; // don't open app for removal
}
if (loadWillReset()) require("messages").write(Bangle.MESSAGES);
Bangle.load("messagecenter.notify.js");
} else {
Bangle.emit("breakingnews", type, msg);
}
}