fix(scheduler): prevent auto-enable with wrong interval on page load
Root cause: GET /api/sync/schedule returned interval_minutes=null when scheduler was stopped, causing dropdown to stay on first HTML option (1 min). Setting .value programmatically could trigger onchange, sending a second PUT with interval=1 right after the user's intended interval. - GET schedule falls back to DB/default (10 min) when scheduler is off - Add _schedulerLoading flag to block onchange during loadSchedulerStatus - Default interval 10 min everywhere (was 5 in backend) - Cache bust dashboard.js v=33 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ let _lastRunId = null;
|
||||
let _currentRunId = null;
|
||||
let _pollIntervalMs = 5000; // default, overridden from settings
|
||||
let _knownLastRunId = null; // track last_run.run_id to detect missed syncs
|
||||
let _schedulerLoading = false; // prevent onchange during programmatic load
|
||||
|
||||
// ── Init ──────────────────────────────────────────
|
||||
|
||||
@@ -202,6 +203,7 @@ async function toggleScheduler() {
|
||||
}
|
||||
|
||||
async function updateSchedulerInterval() {
|
||||
if (_schedulerLoading) return; // ignore programmatic changes during load
|
||||
const enabled = document.getElementById('schedulerToggle').checked;
|
||||
if (enabled) {
|
||||
await toggleScheduler();
|
||||
@@ -209,15 +211,16 @@ async function updateSchedulerInterval() {
|
||||
}
|
||||
|
||||
async function loadSchedulerStatus() {
|
||||
_schedulerLoading = true;
|
||||
try {
|
||||
const res = await fetch('/api/sync/schedule');
|
||||
const data = await res.json();
|
||||
document.getElementById('schedulerToggle').checked = data.enabled || false;
|
||||
if (data.interval_minutes) {
|
||||
document.getElementById('schedulerInterval').value = data.interval_minutes;
|
||||
}
|
||||
document.getElementById('schedulerInterval').value = data.interval_minutes || 10;
|
||||
} catch (err) {
|
||||
console.error('loadSchedulerStatus error:', err);
|
||||
} finally {
|
||||
_schedulerLoading = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user