diff options
Diffstat (limited to 'src/lib/Utility/notifications.ts')
| -rw-r--r-- | src/lib/Utility/notifications.ts | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/Utility/notifications.ts b/src/lib/Utility/notifications.ts new file mode 100644 index 00000000..fe174bd6 --- /dev/null +++ b/src/lib/Utility/notifications.ts @@ -0,0 +1,22 @@ +import { env } from '$env/dynamic/public'; +import root from './root'; + +export const requestNotifications = async () => { + if ('Notification' in window && navigator.serviceWorker) + if ((await Notification.requestPermission()) === 'granted') { + const pushSubscription = await ( + await navigator.serviceWorker.ready + ).pushManager.subscribe({ + userVisibleOnly: true, + applicationServerKey: env.PUBLIC_VAPID_PUBLIC_KEY + }); + + await fetch(root('/api/notifications/subscribe'), { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(pushSubscription) + }); + } +}; |