Sync offline cache on every page load, not just every 2 minutes

Online-side mutations (e.g. deleting a tag) only update the server, not
IndexedDB, so a throttled background sync could leave the offline cache
stale for up to two minutes. Going offline in that window resurrected
deleted/stale data (e.g. a deleted tag reappearing). Removing the throttle
so every real page load pulls fresh state keeps the offline cache in
sync with whatever was just done online.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Keith Smith
2026-09-05 08:36:49 -06:00
co-authored by Claude Sonnet 5
parent bde7be454b
commit c454423d4d
4 changed files with 13 additions and 17 deletions
+10 -2
View File
@@ -3,12 +3,20 @@
* Handles theme toggle, task selection, mobile menus, and AJAX operations
*/
document.addEventListener('DOMContentLoaded', function() {
document.addEventListener('DOMContentLoaded', async function() {
initTheme();
initTaskSelection();
initTimerDisplays();
registerServiceWorker();
maybeBackgroundSync();
// Every real page load is a chance for the online UI to have mutated
// something (a tag delete, a task edit) that IndexedDB doesn't know
// about yet - sync unconditionally (no throttle) so the offline cache
// never lags behind what the user just did while online. The server's
// own rate limit (SyncRateThrottle) is the backstop against excess calls.
const pushedChanges = await runBackgroundSync();
if (pushedChanges) {
window.location.reload();
}
});
window.addEventListener('online', async function() {