Fixed: schedule with objects starts only 1 time

This commit is contained in:
ticaki
2024-01-10 22:19:44 +01:00
parent a075e0cba8
commit d6d12bc93c

View File

@@ -9675,8 +9675,8 @@ type PageAlarm = NSPanel.PageAlarm;
/** /**
* *
* @param time object: { hour: number, minutes: number } | starttime * @param time object { hour: number, minutes: number } | number: Time as number in ms
* @param repeatTime in ms * @param repeatTime in seconds
* @param callback what todo * @param callback what todo
* @returns * @returns
*/ */
@@ -9687,7 +9687,7 @@ function adapterSchedule(time: {hour?: number, minute?: number} | undefined | nu
return ref; return ref;
} }
function _schedule(time: {hour?: number, minute?: number} | undefined | number, ref: number, repeatTime, callback, init: boolean = false) { function _schedule(time: {hour?: number, minute?: number} | undefined | number, ref: number, repeatTime: number, callback, init: boolean = false) {
if (!scheduleList[ref]) return; if (!scheduleList[ref]) return;
if (!init) callback(); if (!init) callback();
let targetTime: number; let targetTime: number;
@@ -9698,12 +9698,12 @@ function _schedule(time: {hour?: number, minute?: number} | undefined | number,
targetTime = time + repeatTime * 1000; targetTime = time + repeatTime * 1000;
time = targetTime; time = targetTime;
} else { } else {
time.hour = time.hour !== undefined ? time.hour : 1; time.hour = time.hour !== undefined ? time.hour : -1;
time.minute = time.minute !== undefined ? time.minute : 0; time.minute = time.minute !== undefined ? time.minute : 0;
targetTime = time.hour !== -1 ? new Date().setHours(time.hour, time.minute, 0) : new Date().setMinutes(time.minute, 0); targetTime = time.hour !== -1 ? new Date().setHours(time.hour, time.minute, 0, 0) : new Date().setMinutes(time.minute, 0, 0);
if (new Date().getTime() > targetTime) { if (new Date().getTime() >= targetTime) {
targetTime += repeatTime * 1000; targetTime += repeatTime * 1000;
targetTime = time.hour !== -1 ? new Date(targetTime).setHours(time.hour, time.minute, 0) : new Date(targetTime).setMinutes(time.minute, 0); targetTime = time.hour !== -1 ? new Date(targetTime).setHours(time.hour, time.minute, 0, 0) : new Date(targetTime).setMinutes(time.minute, 0, 0);
} }
} }
const timeout = targetTime - new Date().getTime(); const timeout = targetTime - new Date().getTime();