diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-03-16 22:32:49 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-03-16 22:32:49 +0000 |
| commit | 95ea6932e8cc7b49556498d6c896fe6f17270aa2 (patch) | |
| tree | ac5db2568dce4678ec790303fc0c9bd74f36743b | |
| parent | b0b79966e957bd5e4fc014978dbf7e9dbebeac61 (diff) | |
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 <noreply@anthropic.com>
| -rw-r--r-- | web/app.js | 9 |
1 files changed, 3 insertions, 6 deletions
@@ -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({ |
