fix problem registering service worker when in a development environment
CI / Build & Quality Checks (pull_request) Canceled after 1m37s
CI / Trigger Desktop Build (pull_request) Canceled after 0s

This commit is contained in:
2026-08-02 18:34:54 -04:00
parent 6a0037ecec
commit 093f10db5c
2 changed files with 30 additions and 7 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"defaultHomeserver": 0, "defaultHomeserver": 0,
"homeserverList": ["matrix.lotusguild.org", "matrix.org", "mozilla.org"], "homeserverList": ["matrix.lotusguild.org", "matrix.org", "mozilla.org", "localhost:8080"],
"allowCustomHomeservers": true, "allowCustomHomeservers": true,
"featuredCommunities": { "featuredCommunities": {
"openAsDefault": false, "openAsDefault": false,
+29 -6
View File
@@ -17,23 +17,46 @@ import App from './app/pages/App';
import './app/i18n'; import './app/i18n';
import { pushSessionToSW } from './sw-session'; import { pushSessionToSW } from './sw-session';
import { getFallbackSession } from './app/state/sessions'; import { getFallbackSession } from './app/state/sessions';
import { register } from 'module';
document.body.classList.add(configClass, varsClass); document.body.classList.add(configClass, varsClass);
// Register Service Worker // Register Service Worker
if ('serviceWorker' in navigator) { if ('serviceWorker' in navigator) {
const swUrl = const isProduction = import.meta.env.PROD;
import.meta.env.MODE === 'production' const swUrl = isProduction
? `${trimTrailingSlash(import.meta.env.BASE_URL)}/sw.js` ? `${trimTrailingSlash(import.meta.env.BASE_URL)}/sw.js`
: `/dev-sw.js?dev-sw`; : `/dev-sw.js?dev-sw`;
const sendSessionToSW = () => { const sendSessionToSW = () => {
const session = getFallbackSession(); const session = getFallbackSession();
pushSessionToSW(session?.baseUrl, session?.accessToken); pushSessionToSW(session?.baseUrl, session?.accessToken);
}; };
navigator.serviceWorker.register(swUrl).then(sendSessionToSW); const registerServiceWorker = async () => {
navigator.serviceWorker.ready.then(sendSessionToSW); 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) => { navigator.serviceWorker.addEventListener('message', (ev) => {
const { type } = ev.data ?? {}; const { type } = ev.data ?? {};