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
-12
View File
@@ -5,8 +5,6 @@
* network-loaded page (never from the cached offline app).
*/
const BACKGROUND_SYNC_MIN_INTERVAL_MS = 2 * 60 * 1000;
// Bump this whenever a previously-untracked entity type starts being synced
// (e.g. tags/time_entries were added after tasks-only syncing already
// shipped). /api/sync/ only returns rows changed since a device's last sync
@@ -173,13 +171,3 @@ async function runBackgroundSync() {
return hadPendingChanges || forceFullResync;
}
async function maybeBackgroundSync() {
const lastSyncAt = await getMeta('last_sync_at');
if (lastSyncAt && Date.now() - new Date(lastSyncAt).getTime() < BACKGROUND_SYNC_MIN_INTERVAL_MS) {
return;
}
const pushedChanges = await runBackgroundSync();
if (pushedChanges) {
window.location.reload();
}
}