From 6ab94bb3cdf2a471011dce7355b6a39c7aef70e0 Mon Sep 17 00:00:00 2001 From: murdle Date: Sun, 21 Dec 2025 16:14:34 +0200 Subject: [PATCH] fix push changes --- assets/public/custom/pushMessages.js | 31 +++++++++++---------------- assets/public/custom/serviceWorker.js | 8 +++++++ assets/public/custom/web/main.js | 8 ++----- assets/public/index.html | 5 ++++- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/assets/public/custom/pushMessages.js b/assets/public/custom/pushMessages.js index e5c66f0b..8bbf05d6 100644 --- a/assets/public/custom/pushMessages.js +++ b/assets/public/custom/pushMessages.js @@ -6,16 +6,10 @@ function checkServiceWorkerSupport() { async function isPushRegistered() { checkServiceWorkerSupport(); try { - const registrations = await navigator.serviceWorker.getRegistrations(); - if (!registrations || registrations.length === 0) return false; - - for (let reg of registrations) { - const subscription = await reg.pushManager.getSubscription(); - if (subscription) return true; - } - - return false; - } catch (error) { + const reg = await navigator.serviceWorker.ready; + const sub = await reg.pushManager.getSubscription(); + return !!sub; + } catch { return false; } } @@ -23,18 +17,19 @@ async function isPushRegistered() { async function unregisterPush() { checkServiceWorkerSupport(); try { - const registrations = await navigator.serviceWorker.getRegistrations(); - if (!registrations || registrations.length === 0) return; + const reg = await navigator.serviceWorker.ready; + const sub = await reg.pushManager.getSubscription(); - for (let i = 0; i < registrations.length; i++) { - const reg = registrations[i]; - const sub = await reg.pushManager.getSubscription(); - - if (sub) await sub.unsubscribe(); + if (sub) { + await sub.unsubscribe(); + } + + if (!window.isIOS()) { await reg.unregister(); } } catch (err) { - console.error("Failed to unregister push:", err); + alert("Failed to unregister push"); + console.error(err); } } diff --git a/assets/public/custom/serviceWorker.js b/assets/public/custom/serviceWorker.js index 7fe61552..b67d3f02 100644 --- a/assets/public/custom/serviceWorker.js +++ b/assets/public/custom/serviceWorker.js @@ -37,4 +37,12 @@ self.addEventListener("notificationclick", (event) => { return clients.openWindow(targetUrl); }) ); +}); + +self.addEventListener("install", () => { + self.skipWaiting(); +}); + +self.addEventListener("activate", (event) => { + event.waitUntil(self.clients.claim()); }); \ No newline at end of file diff --git a/assets/public/custom/web/main.js b/assets/public/custom/web/main.js index 950cff0e..5c064168 100644 --- a/assets/public/custom/web/main.js +++ b/assets/public/custom/web/main.js @@ -16,10 +16,6 @@ "hsl(139, calc(var(--saturation-factor, 1) * 47.3%), 43.9%)": "#43B581", // Online (green) }; - const IS_MOBILE = window - .matchMedia("(pointer: coarse)") - .matches; - const TAB_CONTENT = `

RSCord Settings

Options
@@ -221,7 +217,7 @@ document.body.addEventListener("click", (e) => { const clickedHamburger = e.target.closest(`.${CSS_CLASSES.hamburger}`) - if (clickedHamburger && IS_MOBILE) { + if (clickedHamburger && window.IS_MOBILE) { const settingsRegion = document.querySelector(`.${CSS_CLASSES.settingsRegion}`) settingsRegion.classList.remove(CSS_CLASSES.hidden); @@ -249,7 +245,7 @@ child.style.display = "none"; } - if (IS_MOBILE) { + if (window.IS_MOBILE) { const settingsRegion = document.querySelector(`.${CSS_CLASSES.settingsRegion}`) settingsRegion.classList.add(CSS_CLASSES.hidden); diff --git a/assets/public/index.html b/assets/public/index.html index 5433e2c1..4b611c0c 100644 --- a/assets/public/index.html +++ b/assets/public/index.html @@ -33,10 +33,13 @@ window.GLOBAL_ENV = {}; window.__OVERLAY__ = /overlay/.test(location.pathname) window.__BILLING_STANDALONE__ = /^\/billing/.test(location.pathname) - + window.AUTH_TOKEN = null; window.localStorage_ = localStorage; + window.IS_IOS = /iPad|iPhone|iPod/.test(navigator.userAgent); + window.IS_MOBILE = window.matchMedia("(pointer: coarse)").matches; + function protocolRelative(url) { if (!url) return ""; return "//" + url.replace(/^https?:\/\//, "").replace(/\/$/, "");