diff options
Diffstat (limited to 'packages/sw/src')
| -rw-r--r-- | packages/sw/src/scripts/create-notification.ts | 7 | ||||
| -rw-r--r-- | packages/sw/src/sw.ts | 13 |
2 files changed, 19 insertions, 1 deletions
diff --git a/packages/sw/src/scripts/create-notification.ts b/packages/sw/src/scripts/create-notification.ts index 61ffa7ab0f..8f8f22480e 100644 --- a/packages/sw/src/scripts/create-notification.ts +++ b/packages/sw/src/scripts/create-notification.ts @@ -199,6 +199,13 @@ async function composeNotification(data: PushNotificationDataMap[keyof PushNotif tag: `achievement:${data.body.achievement}`, }]; + case 'pollEnded': + return [t('_notification.pollEnded'), { + body: data.body.note.text ?? '', + badge: iconUrl('chart-arrows'), + data, + }]; + case 'app': return [data.body.header ?? data.body.body, { body: data.body.header ? data.body.body : '', diff --git a/packages/sw/src/sw.ts b/packages/sw/src/sw.ts index 2783f2bfb5..1f085c7392 100644 --- a/packages/sw/src/sw.ts +++ b/packages/sw/src/sw.ts @@ -21,6 +21,10 @@ globalThis.addEventListener('activate', ev => { ); }); +function offlineContentHTML(): string { + return `<!doctype html>Offline. Service Worker @${_VERSION_} <button onclick="location.reload()">reload</button>` +} + globalThis.addEventListener('fetch', ev => { let isHTMLRequest = false; if (ev.request.headers.get('sec-fetch-dest') === 'document') { @@ -34,7 +38,14 @@ globalThis.addEventListener('fetch', ev => { if (!isHTMLRequest) return; ev.respondWith( fetch(ev.request) - .catch(() => new Response(`Offline. Service Worker @${_VERSION_}`, { status: 200 })), + .catch(() => { + return new Response(offlineContentHTML(), { + status: 200, + headers: { + 'content-type': 'text/html', + }, + }); + }), ); }); |