Correct unintentional modifications from original sched.js

Fix breakage such as alarm reloading nonstop when a timer triggers
master
Travis Evans 2025-04-22 14:55:22 -05:00
parent b0ee467389
commit f14046aff6
1 changed files with 50 additions and 29 deletions

View File

@ -1,40 +1,32 @@
const tt = require('tevtimer'); // Chances are boot0.js got run already and scheduled *another*
// 'load(sched.js)' - so let's remove it first!
function setNextRepeatDate(alarm) { if (Bangle.SCHED) {
let date = new Date(alarm.date); clearInterval(Bangle.SCHED);
let rp = alarm.rp; delete Bangle.SCHED;
if (rp===true) { // fallback in case rp is set wrong
date.setDate(date.getDate() + 1);
} else switch(rp.interval) { // rp is an object
case "day":
date.setDate(date.getDate() + rp.num);
break;
case "week":
date.setDate(date.getDate() + (rp.num * 7));
break;
case "month":
if (!alarm.od) alarm.od = date.getDate();
date = new Date(date.getFullYear(), date.getMonth() + rp.num, alarm.od);
if (date.getDate() != alarm.od) date.setDate(0);
break;
case "year":
if (!alarm.od) alarm.od = date.getDate();
date = new Date(date.getFullYear() + rp.num, date.getMonth(), alarm.od);
if (date.getDate() != alarm.od) date.setDate(0);
break;
default:
console.log(`sched: unknown repeat '${JSON.stringify(rp)}'`);
break;
}
alarm.date = date.toLocalISOString().slice(0,10);
} }
const tt = require('tevtimer');
function showAlarm(alarm) { function showAlarm(alarm) {
const alarmIndex = alarms.indexOf(alarm); const alarmIndex = alarms.indexOf(alarm);
const settings = require("sched").getSettings(); const settings = require("sched").getSettings();
const timer = tt.TIMERS[alarm.data.idx]; const timer = tt.TIMERS[alarm.data.idx];
let message = timer.display_name() + '\n' + alarm.msg; let message = timer.display_name() + '\n' + alarm.msg;
// If there's a timer chained from this one, start it
if (timer.chain_id !== null) {
const chainTimer = tt.TIMERS[tt.find_timer_by_id(timer.chain_id)];
if (chainTimer !== undefined) {
chainTimer.reset();
chainTimer.start();
tt.set_last_viewed_timer(chainTimer);
tt.save_timers();
tt.update_system_alarms(); // FIXME: This might break snoozing
} else {
console.warn("tevtimer: unable to find chained timer with ID " + timer.chain_id);
}
}
if (alarm.msg) { if (alarm.msg) {
message += "\n" + alarm.msg; message += "\n" + alarm.msg;
} else { } else {
@ -111,6 +103,35 @@ function showAlarm(alarm) {
}); });
} }
function setNextRepeatDate(alarm) {
let date = new Date(alarm.date);
let rp = alarm.rp;
if (rp===true) { // fallback in case rp is set wrong
date.setDate(date.getDate() + 1);
} else switch(rp.interval) { // rp is an object
case "day":
date.setDate(date.getDate() + rp.num);
break;
case "week":
date.setDate(date.getDate() + (rp.num * 7));
break;
case "month":
if (!alarm.od) alarm.od = date.getDate();
date = new Date(date.getFullYear(), date.getMonth() + rp.num, alarm.od);
if (date.getDate() != alarm.od) date.setDate(0);
break;
case "year":
if (!alarm.od) alarm.od = date.getDate();
date = new Date(date.getFullYear() + rp.num, date.getMonth(), alarm.od);
if (date.getDate() != alarm.od) date.setDate(0);
break;
default:
console.log(`sched: unknown repeat '${JSON.stringify(rp)}'`);
break;
}
alarm.date = date.toLocalISOString().slice(0,10);
}
if ((require("Storage").readJSON("setting.json", 1) || {}).quiet > 1) if ((require("Storage").readJSON("setting.json", 1) || {}).quiet > 1)
return; return;