diff options
| author | altaf-creator <dev@altafcreator.com> | 2025-12-29 20:25:08 +0800 |
|---|---|---|
| committer | altaf-creator <dev@altafcreator.com> | 2025-12-29 20:25:08 +0800 |
| commit | 9080a0c516378dbb94c5178fbc26a8131a530263 (patch) | |
| tree | 5f3aff1737d00ab01852daea742f1c5dfe982b1d /frontend/main.js | |
| parent | 37b76b0f4c8e65b35bbbc617bcbff7a5d637ac3e (diff) | |
new notif everything
Diffstat (limited to 'frontend/main.js')
| -rw-r--r-- | frontend/main.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/frontend/main.js b/frontend/main.js index 1434979..b8803c0 100644 --- a/frontend/main.js +++ b/frontend/main.js @@ -7,6 +7,52 @@ const data = { const API_URL = "https://backend.laundryweb.altafcreator.com" +const PUBLIC_VAPID_KEY = "BCvVfKfWBtHKtzdakJfhYy604yTn0_FgZxy2sNtxcQm6YyC3qdzBBuCJLbVcG6pmbz_CZLa0I44Z-b5UVBbegGw" + +// --- REGISTER SERVICE WORKERS +if ('serviceWorker' in navigator) { + navigator.serviceWorker.register('/sw.js', { + scope: '/', + }); +} + +// --- subscribe +async function subscribe() { + if (!('serviceWorker' in navigator)) return; + + const registration = await navigator.serviceWorker.ready; + + const subscription = await registration.pushManager.subscribe({ + userVisibleOnly: true, + applicationServerKey: urlBase64ToUint8Array(PUBLIC_VAPID_KEY), + }); + console.log(subscription); + + await fetch(`${API_URL}/notif_subscribe`, { + method: 'POST', + body: JSON.stringify(subscription), + headers: { + "Content-Type": "application/json", + }, + }) +} + +/// copied from somewhere +const urlBase64ToUint8Array = (base64String) => { + const padding = '='.repeat((4 - base64String.length % 4) % 4); + const base64 = (base64String + padding) + .replace(/\-/g, '+') + .replace(/_/g, '/'); + + const rawData = window.atob(base64); + const outputArray = new Uint8Array(rawData.length); + + for (let i = 0; i < rawData.length; ++i) { + outputArray[i] = rawData.charCodeAt(i); + } + return outputArray; +}; + // --- check machine status // returns a 2d array representing machines // []: root array |
