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) {
|
function hardMode(tries, max) {
|
||||||
var R = Bangle.appRect;
|
var R = Bangle.appRect;
|
||||||
|
@ -62,3 +62,22 @@ function startHM() {
|
||||||
//between 5-8 random swipes
|
//between 5-8 random swipes
|
||||||
hardMode(0, Math.abs(E.hwRand()%4)+5);
|
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 = [];
|
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() {
|
function drawTimers() {
|
||||||
layer = 0;
|
layer = 0;
|
||||||
var timers = require("sched").getAlarms().filter(a => a.timer && a.appid == "multitimer");
|
var timers = require("sched").getAlarms().filter(a => a.timer && a.appid == "multitimer");
|
||||||
|
@ -297,14 +305,8 @@ function editTimer(idx, a) {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Hard Mode": {
|
"Hard Mode": {
|
||||||
value: !!a.triggercheck,
|
value: a.data.hm,
|
||||||
onchange: v => {
|
onchange: v => setHM(a, v),
|
||||||
if (v)
|
|
||||||
a.triggercheck = triggercheck;
|
|
||||||
else
|
|
||||||
delete a.triggercheck;
|
|
||||||
a.data.hm = v;
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"Vibrate": require("buzz_menu").pattern(a.vibrate, v => a.vibrate = v),
|
"Vibrate": require("buzz_menu").pattern(a.vibrate, v => a.vibrate = v),
|
||||||
"Delete After Expiration": {
|
"Delete After Expiration": {
|
||||||
|
@ -630,14 +632,8 @@ function editAlarm(idx, a) {
|
||||||
onchange: () => editDOW(a.dow, d=>{a.dow=d;editAlarm(idx,a);})
|
onchange: () => editDOW(a.dow, d=>{a.dow=d;editAlarm(idx,a);})
|
||||||
},
|
},
|
||||||
"Hard Mode": {
|
"Hard Mode": {
|
||||||
value: !!a.triggercheck,
|
value: a.data.hm,
|
||||||
onchange: v => {
|
onchange: v => setHM(a, v),
|
||||||
if (v)
|
|
||||||
a.triggercheck = triggercheck;
|
|
||||||
else
|
|
||||||
delete a.triggercheck;
|
|
||||||
a.data.hm = v;
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"Vibrate": require("buzz_menu").pattern(a.vibrate, v => a.vibrate = v),
|
"Vibrate": require("buzz_menu").pattern(a.vibrate, v => a.vibrate = v),
|
||||||
"Delete After Expiration": {
|
"Delete After Expiration": {
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"multitimer.app.js","url":"app.js"},
|
{"name":"multitimer.app.js","url":"app.js"},
|
||||||
{"name":"multitimer.boot.js","url":"boot.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}
|
{"name":"multitimer.img","url":"app-icon.js","evaluate":true}
|
||||||
],
|
],
|
||||||
"data": [{"name":"multitimer.json"}],
|
"data": [{"name":"multitimer.json"}],
|
||||||
|
|
|
@ -24,57 +24,45 @@ function showAlarm(alarm) {
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
|
|
||||||
let buzzCount = settings.buzzCount;
|
let buzzCount = settings.buzzCount;
|
||||||
let showPrompt = true;
|
|
||||||
|
|
||||||
if (alarm.triggercheck) {
|
E.showPrompt(message, {
|
||||||
try {
|
title: alarm.timer ? /*LANG*/"TIMER!" : /*LANG*/"ALARM!",
|
||||||
const action = eval(alarm.triggercheck);
|
buttons: { /*LANG*/"Snooze": true, /*LANG*/"Stop": false } // default is sleep so it'll come back in some mins
|
||||||
if (action === "skipPrompt")
|
}).then(function (sleep) {
|
||||||
showPrompt = false;
|
buzzCount = 0;
|
||||||
} 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;
|
|
||||||
|
|
||||||
if (sleep) {
|
if (sleep) {
|
||||||
if (alarm.ot === undefined) {
|
if (alarm.ot === undefined) {
|
||||||
alarm.ot = alarm.t;
|
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);
|
|
||||||
}
|
}
|
||||||
|
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'
|
// The updated alarm is still a member of 'alarms'
|
||||||
// so writing to array writes changes back directly
|
// so writing to array writes changes back directly
|
||||||
require("sched").setAlarms(alarms);
|
require("sched").setAlarms(alarms);
|
||||||
load();
|
load();
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
function buzz() {
|
function buzz() {
|
||||||
if (settings.unlockAtBuzz) {
|
if (settings.unlockAtBuzz) {
|
||||||
|
|
Loading…
Reference in New Issue