Message widgets: we don't need a library

pull/2376/head
Richard de Boer 2022-12-08 22:33:04 +01:00
parent 605f87bb8f
commit ec410fdac7
No known key found for this signature in database
12 changed files with 24 additions and 33 deletions

View File

@ -1,3 +1,4 @@
0.55: Moved messages library into standalone library 0.55: Moved messages library into standalone library
0.56: Fix handling of music messages 0.56: Fix handling of music messages
0.57: Optimize saving empty message list 0.57: Optimize saving empty message list
0.58: show/hide "messages" widget directly, instead of through library stub

View File

@ -125,9 +125,10 @@ exports.openGUI = function(msg) {
* @param {boolean} show * @param {boolean} show
*/ */
exports.toggleWidget = function(show) { exports.toggleWidget = function(show) {
if (!require("Storage").read("messagewidget")) return; // "messagewidget" module is missing! if (!global.WIDGETS || !WIDGETS["messages"]) return; // widget is missing!
if (show) require("messagewidget").show(); const method = WIDGETS["messages"][show ? "show" : "hide"];
else require("messagewidget").hide(); /* if (typeof(method)!=="function") return; // widget must always have show()+hide(), fail hard rather than hide problems */
method.apply(WIDGETS["messages"]);
}; };
/** /**

View File

@ -1,7 +1,7 @@
{ {
"id": "messages", "id": "messages",
"name": "Messages", "name": "Messages",
"version": "0.57", "version": "0.58",
"description": "Library to handle, load and store message events received from Android/iOS", "description": "Library to handle, load and store message events received from Android/iOS",
"icon": "app.png", "icon": "app.png",
"type": "module", "type": "module",

View File

@ -1 +1,2 @@
0.01: Moved messages widget into standalone widget app 0.01: Moved messages widget into standalone widget app
0.02: Remove library stub

View File

@ -1,8 +0,0 @@
exports.hide = function() {
if (!global.WIDGETS||!WIDGETS["messages"]) return;
WIDGETS["messages"].hide();
}
exports.show = function() {
if (!global.WIDGETS||!WIDGETS["messages"]) return;
WIDGETS["messages"].show();
}

View File

@ -1,7 +1,7 @@
{ {
"id": "widmessages", "id": "widmessages",
"name": "Message Widget", "name": "Message Widget",
"version": "0.01", "version": "0.02",
"description": "Widget showing new messages", "description": "Widget showing new messages",
"icon": "app.png", "icon": "app.png",
"type": "widget", "type": "widget",
@ -9,12 +9,10 @@
"supports": ["BANGLEJS","BANGLEJS2"], "supports": ["BANGLEJS","BANGLEJS2"],
"screenshots": [{"url": "screenshot.gif"}], "screenshots": [{"url": "screenshot.gif"}],
"dependencies" : { "messageicons":"module" }, "dependencies" : { "messageicons":"module" },
"provides_modules" : ["messagewidget"],
"provides_widgets" : ["message"], "provides_widgets" : ["message"],
"default" : true, "default" : true,
"readme": "README.md", "readme": "README.md",
"storage": [ "storage": [
{"name":"messagewidget","url":"lib.js"},
{"name":"widmessages.wid.js","url":"widget.js"} {"name":"widmessages.wid.js","url":"widget.js"}
] ]
} }

View File

@ -7,6 +7,9 @@
.filter((msg, i, arr) => arr.findIndex(nmsg => msg.src == nmsg.src) == i); .filter((msg, i, arr) => arr.findIndex(nmsg => msg.src == nmsg.src) == i);
} }
// NOTE when adding a custom "essages" widget:
// the name still needs to be "messages": the library calls WIDGETS["messages'].hide()/show()
// see e.g. widmsggrid
WIDGETS["messages"] = { WIDGETS["messages"] = {
area: "tl", width: 0, srcs: [], draw: function(recall) { area: "tl", width: 0, srcs: [], draw: function(recall) {
// If we had a setTimeout queued from the last time we were called, remove it // If we had a setTimeout queued from the last time we were called, remove it
@ -54,7 +57,9 @@
var w = WIDGETS["messages"]; var w = WIDGETS["messages"];
if (!w || !w.width || c.x<w.x || c.x>w.x+w.width || c.y<w.y || c.y>w.y+24) return; if (!w || !w.width || c.x<w.x || c.x>w.x+w.width || c.y<w.y || c.y>w.y+24) return;
require("messages").openGUI(); require("messages").openGUI();
}, hide() { },
// hide() and show() are required by the "message" library!
hide() {
this.hidden=true; this.hidden=true;
if (this.width) { if (this.width) {
// hide widget // hide widget

View File

@ -1,3 +1,4 @@
0.01: New widget! 0.01: New widget!
0.02: Adjust to message icons moving to messageicons lib 0.02: Adjust to message icons moving to messageicons lib
0.03: Use new message library 0.03: Use new message library
0.04: Remove library stub

View File

@ -1,8 +0,0 @@
exports.hide = function() {
if (!global.WIDGETS||!WIDGETS["msggrid"]) return;
WIDGETS["msggrid"].hide();
}
exports.show = function() {
if (!global.WIDGETS||!WIDGETS["msggrid"]) return;
WIDGETS["msggrid"].show();
}

View File

@ -1,18 +1,16 @@
{ {
"id": "widmsggrid", "id": "widmsggrid",
"name": "Messages Grid Widget", "name": "Messages Grid Widget",
"version": "0.03", "version": "0.04",
"description": "Widget that displays notification icons in a grid", "description": "Widget that displays notification icons in a grid",
"icon": "widget.png", "icon": "widget.png",
"type": "widget", "type": "widget",
"tags": "tool,system", "tags": "tool,system",
"supports": ["BANGLEJS","BANGLEJS2"], "supports": ["BANGLEJS","BANGLEJS2"],
"dependencies" : { "messages":"module" }, "dependencies" : { "messages":"module" },
"provides_modules" : ["messagewidget"],
"provides_widgets" : ["message"], "provides_widgets" : ["message"],
"readme": "README.md", "readme": "README.md",
"storage": [ "storage": [
{"name":"messagewidget","url":"lib.js"},
{"name":"widmsggrid.wid.js","url":"widget.js"} {"name":"widmsggrid.wid.js","url":"widget.js"}
], ],
"screenshots": [{"url":"screenshot.png"}] "screenshots": [{"url":"screenshot.png"}]

View File

@ -6,7 +6,8 @@
showRead: !!settings.showRead, showRead: !!settings.showRead,
}; };
delete settings; delete settings;
WIDGETS["msggrid"] = { // widget name needs to be "messages": the library calls WIDGETS["messages'].hide()/show()
WIDGETS["messages"] = {
area: "tl", width: 0, area: "tl", width: 0,
flash: s.flash, flash: s.flash,
showRead: s.showRead, showRead: s.showRead,
@ -57,7 +58,9 @@
.drawString(w.total, w.x + w.width - 1, w.y + 24, w.total > 9); .drawString(w.total, w.x + w.width - 1, w.y + 24, w.total > 9);
} }
if (w.flash && w.status === "new") w.t = setTimeout(w.draw, 1000); // schedule redraw while blinking if (w.flash && w.status === "new") w.t = setTimeout(w.draw, 1000); // schedule redraw while blinking
}, show: function (m) { },
// show() and hide() are required by the "message" library!
show: function (m) {
delete w.hidden; delete w.hidden;
w.width = 24; w.width = 24;
w.srcs = require("messages").getMessages(m) w.srcs = require("messages").getMessages(m)
@ -94,6 +97,6 @@
} }
}; };
delete s; delete s;
const w = WIDGETS["msggrid"]; const w = WIDGETS["messages"];
Bangle.on("message", w.listener); Bangle.on("message", w.listener);
})(); })();

View File

@ -93,7 +93,6 @@ const INTERNAL_FILES_IN_APP_TYPE = { // list of app types and files they SHOULD
/* These are warnings we know about but don't want in our output */ /* These are warnings we know about but don't want in our output */
var KNOWN_WARNINGS = [ var KNOWN_WARNINGS = [
"App gpsrec data file wildcard .gpsrc? does not include app ID", "App gpsrec data file wildcard .gpsrc? does not include app ID",
"App widmessages storage file messagewidget is also listed as storage file for app widmsggrid",
]; ];
function globToRegex(pattern) { function globToRegex(pattern) {