feat(pwa): SW Pre-Cache-Orchestrator mit Fortschritt + Delta-Sync
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m19s
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m19s
Message-Handler für sync-start (initial: alle Rezepte cachen) und sync-check (delta: nur neue nachladen, gelöschte räumen). Vor dem Sync ein Storage-Quota-Check (<100 MB frei → abbrechen mit Fehler- Broadcast). Concurrency-Pool mit 4 parallelen Downloads pro Rezept (HTML, API-JSON, Bild). Fortschritt per postMessage an alle Clients, die über den sync-status-Store den SyncIndicator füllen. Das Cache-Manifest wird als JSON-Response unter /__cache-manifest__ im kochwas-meta Cache persistiert. Client triggert beim App-Start entweder sync-check (bereits kontrollierter SW) oder sync-start (erstmaliger SW-Install). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,4 +18,16 @@ export async function registerServiceWorker(): Promise<void> {
|
||||
syncStatus.handle(data);
|
||||
}
|
||||
});
|
||||
|
||||
// Beim App-Start: wenn wir einen aktiven SW haben, frage ihn, ob er
|
||||
// neu synct (initial oder Delta).
|
||||
if (navigator.serviceWorker.controller) {
|
||||
navigator.serviceWorker.controller.postMessage({ type: 'sync-check' });
|
||||
} else {
|
||||
// Erste Session: SW kommt erst mit dem nächsten Reload zum Einsatz.
|
||||
// Beim nächsten Start triggert sync-check dann den Initial-Sync.
|
||||
navigator.serviceWorker.ready.then((reg) => {
|
||||
reg.active?.postMessage({ type: 'sync-start' });
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user