Merge pull request #3283 from nxdefiant/master

alarm, sched: Fix #3281
pull/3295/head
Gordon Williams 2024-03-25 10:54:31 +00:00 committed by GitHub
commit a05216ca00
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 10 additions and 4 deletions

View File

@ -49,3 +49,4 @@
0.44: Add "delete timer after expiration" setting to events.
0.45: Fix new alarm when selectedAlarm is undefined
0.46: Show alarm groups if the Show Group setting is ON. Scroll alarms menu back to previous position when getting back to it.
0.47: Fix wrap around when snoozed through midnight

View File

@ -28,6 +28,8 @@ const iconTimerOff = "\0" + (g.theme.dark
// An array of alarm objects (see sched/README.md)
var alarms = require("sched").getAlarms();
// Fix possible wrap around in existing alarms #3281, broken alarms still needs to be saved to get fixed
alarms.forEach(e => e.t %= 86400000); // This can probably be removed in the future when we are sure there are no more broken alarms
function handleFirstDayOfWeek(dow) {
if (firstDayOfWeek == 1) {
@ -497,7 +499,7 @@ function showEditTimerMenu(selectedTimer, timerIndex) {
function prepareTimerForSave(timer, timerIndex, time, temp) {
timer.timer = require("time_utils").encodeTime(time);
timer.t = require("time_utils").getCurrentTimeMillis() + timer.timer;
timer.t = (require("time_utils").getCurrentTimeMillis() + timer.timer) % 86400000;
timer.last = 0;
if (!temp) {

View File

@ -2,7 +2,7 @@
"id": "alarm",
"name": "Alarms & Timers",
"shortName": "Alarms",
"version": "0.46",
"version": "0.47",
"description": "Set alarms and timers on your Bangle",
"icon": "app.png",
"tags": "tool,alarm",

View File

@ -25,3 +25,4 @@
0.22: Dated event repeat option
0.23: Allow buzzing forever when an alarm fires
0.24: Emit alarmReload when alarms change (used by widalarm)
0.25: Fix wrap around when snoozed through midnight

View File

@ -4,6 +4,7 @@ exports.getAlarms = function() {
};
// Write a list of alarms back to storage
exports.setAlarms = function(alarms) {
alarms.forEach(e => e.t %= 86400000); // Also fix #3281 from other apps, e.g. multitimer
return require("Storage").writeJSON("sched.json",alarms);
};
// Return an alarm object based on ID
@ -35,7 +36,7 @@ exports.setAlarm = function(id, alarm) {
if (alarm.timer) { // if it's a timer, set the start time as a time from *now*
var time = new Date();
var currentTime = (time.getHours()*3600000)+(time.getMinutes()*60000)+(time.getSeconds()*1000);
alarm.t = currentTime + alarm.timer;
alarm.t = (currentTime + alarm.timer) % 86400000;
}
alarms.push(alarm);
}

View File

@ -1,7 +1,7 @@
{
"id": "sched",
"name": "Scheduler",
"version": "0.24",
"version": "0.25",
"description": "Scheduling library for alarms and timers",
"icon": "app.png",
"type": "scheduler",

View File

@ -36,6 +36,7 @@ function showAlarm(alarm) {
alarm.ot = alarm.t;
}
alarm.t += settings.defaultSnoozeMillis;
alarm.t %= 86400000;
Bangle.emit("alarmSnooze", alarm);
} else {
let del = alarm.del === undefined ? settings.defaultDeleteExpiredTimers : alarm.del;