diff --git a/apps/messages/lib.js b/apps/messages/lib.js index 68fce689f..7d7677e85 100644 --- a/apps/messages/lib.js +++ b/apps/messages/lib.js @@ -68,27 +68,34 @@ exports.pushMessage = function(event) { if(quiet && quietNoAutOpn) { loadMessages = false; } - // first, buzz - if (!quiet && loadMessages){ - if(global.WIDGETS && WIDGETS.messages) - WIDGETS.messages.buzz(); - else - Bangle.buzz(); - if(unlockWatch != false){ - Bangle.setLocked(false); - Bangle.setLCDPower(1); // turn screen on - } + if (!quiet && loadMessages && unlockWatch != false){ + Bangle.setLocked(false); + Bangle.setLCDPower(1); // turn screen on + } } // after a delay load the app, to ensure we have all the messages if (exports.messageTimeout) clearTimeout(exports.messageTimeout); exports.messageTimeout = setTimeout(function() { exports.messageTimeout = undefined; - // if we're in a clock or it's important, go straight to messages app - if (loadMessages){ - return load("messages.app.js"); + var cont = function() { + // if we're in a clock or it's important, go straight to messages app + if (loadMessages){ + return load("messages.app.js"); + } + if (global.WIDGETS && WIDGETS.messages) { // show messages if widgets are loaded + WIDGETS.messages.show(); + } + }; + if (quiet) { + //Be quiet and cont()inue displaying. + cont(); + } else { + //We have to wait for buzzing to complete before cont()inuing + if(global.WIDGETS && WIDGETS.messages) + WIDGETS.messages.buzz().then(()=>cont()); + else + Bangle.buzz().then(()=>cont()); } - if (!quiet && (!global.WIDGETS || !WIDGETS.messages)) return Bangle.buzz(); // no widgets - just buzz to let someone know - WIDGETS.messages.show(); }, 500); } /// Remove all messages diff --git a/apps/messages/widget.js b/apps/messages/widget.js index ca02d4f1f..93e859446 100644 --- a/apps/messages/widget.js +++ b/apps/messages/widget.js @@ -15,7 +15,7 @@ draw:function(recall) { g.drawImage(settings.flash && (c&1) ? atob("GBiBAAAAAAAAAAAAAAAAAAAAAB//+DAADDAADDAADDwAPD8A/DOBzDDn/DA//DAHvDAPvjAPvjAPvjAPvh///gf/vAAD+AAB8AAAAA==") : atob("GBiBAAAAAAAAAAAAAAAAAAAAAB//+D///D///A//8CP/xDj/HD48DD+B8D/D+D/3vD/vvj/vvj/vvj/vvh/v/gfnvAAD+AAB8AAAAA=="), this.x, this.y-1); } if (settings.repeat===undefined) settings.repeat = 4; - if (c<120 && (Date.now()-this.l)>settings.repeat*1000) { + if (c<120 && settings.repeat>0 && (Date.now()-this.l)>settings.repeat*1000) { this.l = Date.now(); WIDGETS["messages"].buzz(); // buzz every 4 seconds } @@ -33,8 +33,8 @@ draw:function(recall) { WIDGETS["messages"].width=0; Bangle.drawWidgets(); },buzz:function() { - if ((require('Storage').readJSON('setting.json',1)||{}).quiet) return; // never buzz during Quiet Mode - require("buzz").pattern((require('Storage').readJSON("messages.settings.json", true) || {}).vibrate || "."); + if ((require('Storage').readJSON('setting.json',1)||{}).quiet) return new Promise((success) => { success(); }); // never buzz during Quiet Mode + return require("buzz").pattern((require('Storage').readJSON("messages.settings.json", true) || {}).vibrate || "."); },touch:function(b,c) { var w=WIDGETS["messages"]; if (!w||!w.width||c.xw.x+w.width||c.yw.y+w.iconwidth) return;