From 093f10db5ccd2312da9640a4be2b081cfdb919bc Mon Sep 17 00:00:00 2001 From: nathan Date: Sun, 2 Aug 2026 18:34:54 -0400 Subject: [PATCH] fix problem registering service worker when in a development environment --- config.json | 2 +- src/index.tsx | 35 +++++++++++++++++++++++++++++------ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/config.json b/config.json index 1ae326733..3e2112e6e 100644 --- a/config.json +++ b/config.json @@ -1,6 +1,6 @@ { "defaultHomeserver": 0, - "homeserverList": ["matrix.lotusguild.org", "matrix.org", "mozilla.org"], + "homeserverList": ["matrix.lotusguild.org", "matrix.org", "mozilla.org", "localhost:8080"], "allowCustomHomeservers": true, "featuredCommunities": { "openAsDefault": false, diff --git a/src/index.tsx b/src/index.tsx index 0ebabbf03..dcbc368e9 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -17,23 +17,46 @@ import App from './app/pages/App'; import './app/i18n'; import { pushSessionToSW } from './sw-session'; import { getFallbackSession } from './app/state/sessions'; +import { register } from 'module'; document.body.classList.add(configClass, varsClass); // Register Service Worker if ('serviceWorker' in navigator) { - const swUrl = - import.meta.env.MODE === 'production' - ? `${trimTrailingSlash(import.meta.env.BASE_URL)}/sw.js` - : `/dev-sw.js?dev-sw`; + const isProduction = import.meta.env.PROD; + const swUrl = isProduction + ? `${trimTrailingSlash(import.meta.env.BASE_URL)}/sw.js` + : `/dev-sw.js?dev-sw`; const sendSessionToSW = () => { const session = getFallbackSession(); pushSessionToSW(session?.baseUrl, session?.accessToken); }; - navigator.serviceWorker.register(swUrl).then(sendSessionToSW); - navigator.serviceWorker.ready.then(sendSessionToSW); + const registerServiceWorker = async () => { + try { + const registration = await navigator.serviceWorker.register( + swUrl, + isProduction + ? undefined + : { + type: 'module', + scope: '/', + }, + ); + + sendSessionToSW(); + + await navigator.serviceWorker.ready; + sendSessionToSW(); + + console.info('Service worker registered:', registration.scope); + } catch (error) { + console.error('Service worker registration failed:', error); + } + }; + + void registerServiceWorker(); navigator.serviceWorker.addEventListener('message', (ev) => { const { type } = ev.data ?? {};