refac/enh: unregisterServiceWorkers on update

This commit is contained in:
Timothy Jaeryang Baek committed 2025-11-20 15:34:15 -05:00
1 parent 4c28f19bdd
commit ff7a54653a
5 files changed
+46 -7

No files matched your search

+37 -6
View File
@@ -16,6 +16,7 @@
theme,
WEBUI_NAME,
WEBUI_VERSION,
WEBUI_DEPLOYMENT_ID,
mobile,
socket,
chatId,
@@ -54,9 +55,24 @@
import Spinner from '$lib/components/common/Spinner.svelte';
import { getUserSettings } from '$lib/apis/users';
const unregisterServiceWorkers = async () => {
if ('serviceWorker' in navigator) {
try {
const registrations = await navigator.serviceWorker.getRegistrations();
await Promise.all(registrations.map((r) => r.unregister()));
return true;
} catch (error) {
console.error('Error unregistering service workers:', error);
return false;
}
}
return false;
};
// handle frontend updates (https://svelte.dev/docs/kit/configuration#version)
beforeNavigate(({ willUnload, to }) => {
beforeNavigate(async ({ willUnload, to }) => {
if (updated.current && !willUnload && to?.url) {
await unregisterServiceWorkers();
location.href = to.url.href;
}
});
@@ -90,15 +106,30 @@
_socket.on('connect', async () => {
console.log('connected', _socket.id);
const version = await getVersion(localStorage.token);
if (version !== null) {
if ($WEBUI_VERSION !== null && version !== $WEBUI_VERSION) {
const res = await getVersion(localStorage.token);
const deploymentId = res?.deployment_id ?? null;
const version = res?.version ?? null;
if (version !== null || deploymentId !== null) {
if (
($WEBUI_VERSION !== null && version !== $WEBUI_VERSION) ||
($WEBUI_DEPLOYMENT_ID !== null && deploymentId !== $WEBUI_DEPLOYMENT_ID)
) {
await unregisterServiceWorkers();
location.href = location.href;
} else {
WEBUI_VERSION.set(version);
return;
}
}
if (deploymentId !== null) {
WEBUI_DEPLOYMENT_ID.set(deploymentId);
}
if (version !== null) {
WEBUI_VERSION.set(version);
}
console.log('version', version);
if (localStorage.getItem('token')) {