mirror of https://github.com/espruino/BangleApps
multitimer: revert triggercheck, tailcall sched after hardmode alarms
parent
c930936b39
commit
27bf21466a
|
@ -1,4 +1,4 @@
|
|||
// called by alarm.triggercheck
|
||||
// called by getActiveAlarms(...)[0].js
|
||||
|
||||
function hardMode(tries, max) {
|
||||
var R = Bangle.appRect;
|
||||
|
@ -62,3 +62,22 @@ function startHM() {
|
|||
//between 5-8 random swipes
|
||||
hardMode(0, Math.abs(E.hwRand()%4)+5);
|
||||
}
|
||||
|
||||
function buzz() {
|
||||
let buzzCount = 3 * require("sched").getSettings().buzzCount;
|
||||
|
||||
require("buzz").pattern(alarm.vibrate === undefined ? "::" : alarm.vibrate).then(() => {
|
||||
if (buzzCount--) {
|
||||
setTimeout(buzz, settings.buzzIntervalMillis);
|
||||
} else if (alarm.as) { // auto-snooze
|
||||
buzzCount = settings.buzzCount;
|
||||
setTimeout(buzz, settings.defaultSnoozeMillis);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let alarms = require("sched").getAlarms();
|
||||
let active = require("sched").getActiveAlarms(alarms);
|
||||
// active[0] is a HM alarm (otherwise we'd have triggered sched.js instead of this file)
|
||||
startHM();
|
||||
buzz();
|
|
@ -63,6 +63,14 @@ function clearInt() {
|
|||
timerInt2 = [];
|
||||
}
|
||||
|
||||
function setHM(alarm, on) {
|
||||
if (on)
|
||||
alarm.js = "(require('Storage').read('multitimer.alarm.js') !== undefined) ? load('multitimer.alarm.js') : load('sched.js')";
|
||||
else
|
||||
delete alarm.js;
|
||||
alarm.data.hm = on;
|
||||
}
|
||||
|
||||
function drawTimers() {
|
||||
layer = 0;
|
||||
var timers = require("sched").getAlarms().filter(a => a.timer && a.appid == "multitimer");
|
||||
|
@ -297,14 +305,8 @@ function editTimer(idx, a) {
|
|||
}
|
||||
},
|
||||
"Hard Mode": {
|
||||
value: !!a.triggercheck,
|
||||
onchange: v => {
|
||||
if (v)
|
||||
a.triggercheck = triggercheck;
|
||||
else
|
||||
delete a.triggercheck;
|
||||
a.data.hm = v;
|
||||
},
|
||||
value: a.data.hm,
|
||||
onchange: v => setHM(a, v),
|
||||
},
|
||||
"Vibrate": require("buzz_menu").pattern(a.vibrate, v => a.vibrate = v),
|
||||
"Delete After Expiration": {
|
||||
|
@ -630,14 +632,8 @@ function editAlarm(idx, a) {
|
|||
onchange: () => editDOW(a.dow, d=>{a.dow=d;editAlarm(idx,a);})
|
||||
},
|
||||
"Hard Mode": {
|
||||
value: !!a.triggercheck,
|
||||
onchange: v => {
|
||||
if (v)
|
||||
a.triggercheck = triggercheck;
|
||||
else
|
||||
delete a.triggercheck;
|
||||
a.data.hm = v;
|
||||
},
|
||||
value: a.data.hm,
|
||||
onchange: v => setHM(a, v),
|
||||
},
|
||||
"Vibrate": require("buzz_menu").pattern(a.vibrate, v => a.vibrate = v),
|
||||
"Delete After Expiration": {
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
"storage": [
|
||||
{"name":"multitimer.app.js","url":"app.js"},
|
||||
{"name":"multitimer.boot.js","url":"boot.js"},
|
||||
{"name":"multitimer.ext.js","url":"ext.js"},
|
||||
{"name":"multitimer.alarm.js","url":"alarm.js"},
|
||||
{"name":"multitimer.img","url":"app-icon.js","evaluate":true}
|
||||
],
|
||||
"data": [{"name":"multitimer.json"}],
|
||||
|
|
|
@ -24,57 +24,45 @@ function showAlarm(alarm) {
|
|||
Bangle.drawWidgets();
|
||||
|
||||
let buzzCount = settings.buzzCount;
|
||||
let showPrompt = true;
|
||||
|
||||
if (alarm.triggercheck) {
|
||||
try {
|
||||
const action = eval(alarm.triggercheck);
|
||||
if (action === "skipPrompt")
|
||||
showPrompt = false;
|
||||
} catch (e) {
|
||||
// ignore errors, continue
|
||||
}
|
||||
}
|
||||
if (showPrompt) {
|
||||
E.showPrompt(message, {
|
||||
title: alarm.timer ? /*LANG*/"TIMER!" : /*LANG*/"ALARM!",
|
||||
buttons: { /*LANG*/"Snooze": true, /*LANG*/"Stop": false } // default is sleep so it'll come back in some mins
|
||||
}).then(function (sleep) {
|
||||
buzzCount = 0;
|
||||
E.showPrompt(message, {
|
||||
title: alarm.timer ? /*LANG*/"TIMER!" : /*LANG*/"ALARM!",
|
||||
buttons: { /*LANG*/"Snooze": true, /*LANG*/"Stop": false } // default is sleep so it'll come back in some mins
|
||||
}).then(function (sleep) {
|
||||
buzzCount = 0;
|
||||
|
||||
if (sleep) {
|
||||
if (alarm.ot === undefined) {
|
||||
alarm.ot = alarm.t;
|
||||
}
|
||||
alarm.t += settings.defaultSnoozeMillis;
|
||||
Bangle.emit("alarmSnooze", alarm);
|
||||
} else {
|
||||
let del = alarm.del === undefined ? settings.defaultDeleteExpiredTimers : alarm.del;
|
||||
if (del) {
|
||||
alarms.splice(alarmIndex, 1);
|
||||
} else {
|
||||
if (alarm.date && alarm.rp) {
|
||||
setNextRepeatDate(alarm);
|
||||
} else if (!alarm.timer) {
|
||||
alarm.last = new Date().getDate();
|
||||
}
|
||||
if (alarm.ot !== undefined) {
|
||||
alarm.t = alarm.ot;
|
||||
delete alarm.ot;
|
||||
}
|
||||
if (!alarm.rp) {
|
||||
alarm.on = false;
|
||||
}
|
||||
}
|
||||
Bangle.emit("alarmDismiss", alarm);
|
||||
if (sleep) {
|
||||
if (alarm.ot === undefined) {
|
||||
alarm.ot = alarm.t;
|
||||
}
|
||||
alarm.t += settings.defaultSnoozeMillis;
|
||||
Bangle.emit("alarmSnooze", alarm);
|
||||
} else {
|
||||
let del = alarm.del === undefined ? settings.defaultDeleteExpiredTimers : alarm.del;
|
||||
if (del) {
|
||||
alarms.splice(alarmIndex, 1);
|
||||
} else {
|
||||
if (alarm.date && alarm.rp) {
|
||||
setNextRepeatDate(alarm);
|
||||
} else if (!alarm.timer) {
|
||||
alarm.last = new Date().getDate();
|
||||
}
|
||||
if (alarm.ot !== undefined) {
|
||||
alarm.t = alarm.ot;
|
||||
delete alarm.ot;
|
||||
}
|
||||
if (!alarm.rp) {
|
||||
alarm.on = false;
|
||||
}
|
||||
}
|
||||
Bangle.emit("alarmDismiss", alarm);
|
||||
}
|
||||
|
||||
// The updated alarm is still a member of 'alarms'
|
||||
// so writing to array writes changes back directly
|
||||
require("sched").setAlarms(alarms);
|
||||
load();
|
||||
});
|
||||
}
|
||||
// The updated alarm is still a member of 'alarms'
|
||||
// so writing to array writes changes back directly
|
||||
require("sched").setAlarms(alarms);
|
||||
load();
|
||||
});
|
||||
|
||||
function buzz() {
|
||||
if (settings.unlockAtBuzz) {
|
||||
|
|
Loading…
Reference in New Issue