diff options
Diffstat (limited to 'frontend')
| -rw-r--r-- | frontend/main.js | 46 | ||||
| -rw-r--r-- | frontend/permissionrequest.js | 16 |
2 files changed, 47 insertions, 15 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 diff --git a/frontend/permissionrequest.js b/frontend/permissionrequest.js index 2303347..0c8d4d9 100644 --- a/frontend/permissionrequest.js +++ b/frontend/permissionrequest.js @@ -19,19 +19,5 @@ console.log("notbtn") notbtn.addEventListener("click", () => requestPermission()) async function requestPermission() { - try { - - console.log("Requesting permission..."); - const onesignal_result = await OneSignal.Notifications.requestPermission(); - alert("succ", onesignal_result.toString(), OneSignal.toString()); - console.log(onesignal_result); - if (onesignal_result) { - notif.remove(); - startbtn.disabled = false; - data.onesignal_subscription_id = OneSignal.User.PushSubscription["id"]; - } - } - catch (e) { - alert("err:", e, e.toString()); - } + subscribe() } |
