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 ?? {};