fix(webapp): use direct service worker registration
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
// @ts-nocheck
|
||||
import '../app.css';
|
||||
import { onMount } from 'svelte';
|
||||
import { registerSW } from 'virtual:pwa-register';
|
||||
import favicon from '$lib/assets/favicon.svg';
|
||||
import { appController } from '$lib/app/controller';
|
||||
import {
|
||||
@@ -17,14 +16,47 @@
|
||||
let { children } = $props();
|
||||
|
||||
onMount(() => {
|
||||
registerSW({
|
||||
onNeedRefresh() {
|
||||
setUpdateAvailable(true);
|
||||
},
|
||||
onOfflineReady() {
|
||||
setOfflineReady(true);
|
||||
const registerServiceWorker = async () => {
|
||||
if (!import.meta.env.PROD || !('serviceWorker' in navigator)) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
try {
|
||||
const registration = await navigator.serviceWorker.register('/sw.js');
|
||||
|
||||
const handleInstallingWorker = (worker) => {
|
||||
if (!worker) {
|
||||
return;
|
||||
}
|
||||
|
||||
worker.addEventListener('statechange', () => {
|
||||
if (worker.state !== 'installed') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (navigator.serviceWorker.controller) {
|
||||
setUpdateAvailable(true);
|
||||
return;
|
||||
}
|
||||
|
||||
setOfflineReady(true);
|
||||
});
|
||||
};
|
||||
|
||||
if (registration.waiting) {
|
||||
setUpdateAvailable(true);
|
||||
}
|
||||
|
||||
handleInstallingWorker(registration.installing);
|
||||
registration.addEventListener('updatefound', () => {
|
||||
handleInstallingWorker(registration.installing);
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Service worker registration failed', error);
|
||||
}
|
||||
};
|
||||
|
||||
void registerServiceWorker();
|
||||
|
||||
const handleBeforeInstallPrompt = (event) => {
|
||||
event.preventDefault();
|
||||
|
||||
Reference in New Issue
Block a user