8d99c3d2d6
- Renew CSRF cookie on /auth/me (first call after iOS PWA resume) - Add try-catch + hex validation to CSRF middleware for corrupted tokens - Auto-retry state-changing requests on 403 by refreshing CSRF token - Add 200ms delay before SW controllerchange reload to prevent blank page on iOS
28 lines
1.0 KiB
JavaScript
28 lines
1.0 KiB
JavaScript
/**
|
|
* Modul: Service Worker Registrierung
|
|
* Zweck: Ausgelagert aus index.html um CSP-Inline-Script-Verletzung zu vermeiden.
|
|
* Handhabt nahtlose Updates via controllerchange.
|
|
* Abhängigkeiten: keine
|
|
*/
|
|
|
|
if ('serviceWorker' in navigator) {
|
|
window.addEventListener('load', () => {
|
|
navigator.serviceWorker.register('/sw.js').catch((err) => {
|
|
console.warn('[SW] Registrierung fehlgeschlagen:', err);
|
|
});
|
|
});
|
|
|
|
// SW-Update: Auf iOS-PWA fuehrt ein sofortiger Reload bei controllerchange
|
|
// zu Timing-Problemen (leere Seite, verlorene Cookies). Stattdessen nur
|
|
// nachladen wenn die Seite gerade nicht mitten im Initialisieren ist.
|
|
let refreshing = false;
|
|
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
|
if (refreshing) return;
|
|
refreshing = true;
|
|
// Kurz warten damit der neue SW vollstaendig aktiviert ist und
|
|
// clients.claim() abgeschlossen hat, bevor die Seite neu laedt.
|
|
// Auf iOS-Standalone verhindert das den "leere Seite"-Bug.
|
|
setTimeout(() => window.location.reload(), 200);
|
|
});
|
|
}
|