BangleApps/apps/timerclk/timer.alert.js

63 lines
1.7 KiB
JavaScript
Raw Normal View History

2022-01-21 10:46:13 +00:00
if (timerclkTimerTimeout) clearInterval(timerclkTimerTimeout);
var timerclk = require("timerclk.lib.js");
var settings = require('Storage').readJSON("timerclk.json", true) || {};
settings = Object.assign({
"vibrate":10
}, settings.timer||{});
function showTimer(timer) {
Bangle.loadWidgets();
Bangle.drawWidgets();
Bangle.setLocked(false);
E.showPrompt("Timer finished!",{
title:"TIMER!",
buttons : {/*LANG*/"Ok":true}
}).then(function(ok) {
buzzCount = 0;
if (ok) {
timer.time += Date.now() - timer.start;
timer.start = null;
}
require("Storage").write("timerclk.timer.json",JSON.stringify(timers));
load();
});
function vibrate(counter) {
VIBRATE.write(1);
setTimeout(() => VIBRATE.write(0), 100);
if (--counter) setTimeout(() => vibrate(counter), 250);
}
function buzz() {
if ((require('Storage').readJSON('setting.json',1)||{}).quiet>1) return; // total silence
vibrate(4);
if (buzzCount--)
setTimeout(buzz, 3000);
else { // auto-snooze
buzzCount = settings.vibrate;
setTimeout(buzz, 600000);
}
}
var buzzCount = settings.vibrate;
buzz();
}
// Check for timers
console.log("checking for timers...");
var timers = require("Storage").readJSON("timerclk.timer.json",1)||[];
var active = timers.filter(e=>e.start);
if (active.length) {
// if there's an timer, show it
active = active.sort((a,b)=>{
var at = a.time;
if (a.start) at += Date.now()-a.start;
at = a.period-at;
var bt = b.time;
if (b.start) bt += Date.now()-b.start;
bt = b.period-bt;
return at-bt;
});
showTimer(active[0]);
} else {
// otherwise just go back to default app
setTimeout(load, 100);
}