mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 12:25:20 +00:00
refac/enh: unregisterServiceWorkers on update
This commit is contained in:
parent
4c28f19bdd
commit
ff7a54653a
5 changed files with 46 additions and 7 deletions
|
|
@ -135,6 +135,9 @@ else:
|
||||||
PACKAGE_DATA = {"version": "0.0.0"}
|
PACKAGE_DATA = {"version": "0.0.0"}
|
||||||
|
|
||||||
VERSION = PACKAGE_DATA["version"]
|
VERSION = PACKAGE_DATA["version"]
|
||||||
|
|
||||||
|
|
||||||
|
DEPLOYMENT_ID = os.environ.get("DEPLOYMENT_ID", "")
|
||||||
INSTANCE_ID = os.environ.get("INSTANCE_ID", str(uuid4()))
|
INSTANCE_ID = os.environ.get("INSTANCE_ID", str(uuid4()))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -454,6 +454,7 @@ from open_webui.env import (
|
||||||
SAFE_MODE,
|
SAFE_MODE,
|
||||||
SRC_LOG_LEVELS,
|
SRC_LOG_LEVELS,
|
||||||
VERSION,
|
VERSION,
|
||||||
|
DEPLOYMENT_ID,
|
||||||
INSTANCE_ID,
|
INSTANCE_ID,
|
||||||
WEBUI_BUILD_HASH,
|
WEBUI_BUILD_HASH,
|
||||||
WEBUI_SECRET_KEY,
|
WEBUI_SECRET_KEY,
|
||||||
|
|
@ -1983,6 +1984,7 @@ async def update_webhook_url(form_data: UrlForm, user=Depends(get_admin_user)):
|
||||||
async def get_app_version():
|
async def get_app_version():
|
||||||
return {
|
return {
|
||||||
"version": VERSION,
|
"version": VERSION,
|
||||||
|
"deployment_id": DEPLOYMENT_ID,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1425,7 +1425,7 @@ export const getVersion = async (token: string) => {
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
return res?.version ?? null;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getVersionUpdates = async (token: string) => {
|
export const getVersionUpdates = async (token: string) => {
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,10 @@ import emojiShortCodes from '$lib/emoji-shortcodes.json';
|
||||||
|
|
||||||
// Backend
|
// Backend
|
||||||
export const WEBUI_NAME = writable(APP_NAME);
|
export const WEBUI_NAME = writable(APP_NAME);
|
||||||
|
|
||||||
export const WEBUI_VERSION = writable(null);
|
export const WEBUI_VERSION = writable(null);
|
||||||
|
export const WEBUI_DEPLOYMENT_ID = writable(null);
|
||||||
|
|
||||||
export const config: Writable<Config | undefined> = writable(undefined);
|
export const config: Writable<Config | undefined> = writable(undefined);
|
||||||
export const user: Writable<SessionUser | undefined> = writable(undefined);
|
export const user: Writable<SessionUser | undefined> = writable(undefined);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
theme,
|
theme,
|
||||||
WEBUI_NAME,
|
WEBUI_NAME,
|
||||||
WEBUI_VERSION,
|
WEBUI_VERSION,
|
||||||
|
WEBUI_DEPLOYMENT_ID,
|
||||||
mobile,
|
mobile,
|
||||||
socket,
|
socket,
|
||||||
chatId,
|
chatId,
|
||||||
|
|
@ -54,9 +55,24 @@
|
||||||
import Spinner from '$lib/components/common/Spinner.svelte';
|
import Spinner from '$lib/components/common/Spinner.svelte';
|
||||||
import { getUserSettings } from '$lib/apis/users';
|
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)
|
// handle frontend updates (https://svelte.dev/docs/kit/configuration#version)
|
||||||
beforeNavigate(({ willUnload, to }) => {
|
beforeNavigate(async ({ willUnload, to }) => {
|
||||||
if (updated.current && !willUnload && to?.url) {
|
if (updated.current && !willUnload && to?.url) {
|
||||||
|
await unregisterServiceWorkers();
|
||||||
location.href = to.url.href;
|
location.href = to.url.href;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -90,15 +106,30 @@
|
||||||
|
|
||||||
_socket.on('connect', async () => {
|
_socket.on('connect', async () => {
|
||||||
console.log('connected', _socket.id);
|
console.log('connected', _socket.id);
|
||||||
const version = await getVersion(localStorage.token);
|
const res = await getVersion(localStorage.token);
|
||||||
if (version !== null) {
|
|
||||||
if ($WEBUI_VERSION !== null && version !== $WEBUI_VERSION) {
|
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;
|
location.href = location.href;
|
||||||
} else {
|
return;
|
||||||
WEBUI_VERSION.set(version);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (deploymentId !== null) {
|
||||||
|
WEBUI_DEPLOYMENT_ID.set(deploymentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (version !== null) {
|
||||||
|
WEBUI_VERSION.set(version);
|
||||||
|
}
|
||||||
|
|
||||||
console.log('version', version);
|
console.log('version', version);
|
||||||
|
|
||||||
if (localStorage.getItem('token')) {
|
if (localStorage.getItem('token')) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue