summaryrefslogtreecommitdiff
path: root/frontend/main.js
diff options
context:
space:
mode:
authoraltaf-creator <dev@altafcreator.com>2025-12-29 20:25:08 +0800
committeraltaf-creator <dev@altafcreator.com>2025-12-29 20:25:08 +0800
commit9080a0c516378dbb94c5178fbc26a8131a530263 (patch)
tree5f3aff1737d00ab01852daea742f1c5dfe982b1d /frontend/main.js
parent37b76b0f4c8e65b35bbbc617bcbff7a5d637ac3e (diff)
new notif everything
Diffstat (limited to 'frontend/main.js')
-rw-r--r--frontend/main.js46
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