From 95ea6932e8cc7b49556498d6c896fe6f17270aa2 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Mon, 16 Mar 2026 22:32:49 +0000 Subject: fix: wait for service worker to activate before subscribing to push navigator.serviceWorker.register() returns before the SW is active. Use navigator.serviceWorker.ready which resolves only once a SW is controlling the page, so pushManager.subscribe() always has an active SW. Co-Authored-By: Claude Sonnet 4.6 --- web/app.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/web/app.js b/web/app.js index 929b45d..eff8054 100644 --- a/web/app.js +++ b/web/app.js @@ -2634,12 +2634,9 @@ async function enableNotifications(btn) { if (!keyRes.ok) throw new Error(`Failed to get VAPID key: HTTP ${keyRes.status}`); const { public_key: vapidKey } = await keyRes.json(); - // Register service worker. - const registration = await registerServiceWorker(); - if (!registration) { - alert('Service worker registration failed.'); - return; - } + // Register service worker and wait for it to become active. + await registerServiceWorker(); + const registration = await navigator.serviceWorker.ready; // Subscribe via PushManager. const subscription = await registration.pushManager.subscribe({ -- cgit v1.2.3