feat(pwa): Service-Worker-Gerüst mit Shell-Cache + Fetch-Dispatch
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m17s
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m17s
src/service-worker.ts installiert die App-Shell-Assets (build + files aus $service-worker) beim install-Event in kochwas-shell- <version>, räumt alte Shell-Caches beim activate und dispatcht jeden Fetch via resolveStrategy — shell/images cache-first, swr stale-while-revalidate, network-only unangetastet. Pre-Cache- Orchestrator kommt in Task 9. Client-seitig registriert sw-register.ts den SW und verdrahtet Messages vom SW in den sync-status-Store. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
21
src/lib/client/sw-register.ts
Normal file
21
src/lib/client/sw-register.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
// Registriert den Service-Worker und verdrahtet ihn mit dem
|
||||
// Sync-Status-Store. Im Dev-Modus läuft Kochwas über HTTP; die
|
||||
// SW-API ist da nur auf localhost verfügbar. SvelteKit liefert den
|
||||
// SW unter /service-worker.js im Production-Build.
|
||||
import { syncStatus, type SWMessage } from '$lib/client/sync-status.svelte';
|
||||
|
||||
export async function registerServiceWorker(): Promise<void> {
|
||||
if (typeof navigator === 'undefined' || !('serviceWorker' in navigator)) return;
|
||||
try {
|
||||
await navigator.serviceWorker.register('/service-worker.js', { type: 'module' });
|
||||
} catch (e) {
|
||||
console.warn('SW-Registrierung fehlgeschlagen', e);
|
||||
return;
|
||||
}
|
||||
navigator.serviceWorker.addEventListener('message', (event) => {
|
||||
const data = event.data as SWMessage | undefined;
|
||||
if (data && typeof data === 'object' && 'type' in data) {
|
||||
syncStatus.handle(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user