From 198d899b867f7f55a87dde5624b03b28b44ae823 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Tue, 4 Nov 2025 23:29:17 +0100 Subject: [PATCH] Fix forced reload detection when tab is resumed after WebUI update In case the tab gets resumed, it does not get fully reloaded but does reexecute js. This caused the initial timestamp to get overwritten and lead to the forced reload detection to be incorrect, because it assumed that the app just got loaded. --- src/features/app-updates/components/WebUIUpdateChecker.tsx | 2 +- src/lib/storage/AppStorage.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/features/app-updates/components/WebUIUpdateChecker.tsx b/src/features/app-updates/components/WebUIUpdateChecker.tsx index 066d302e..119f8bcf 100644 --- a/src/features/app-updates/components/WebUIUpdateChecker.tsx +++ b/src/features/app-updates/components/WebUIUpdateChecker.tsx @@ -33,7 +33,7 @@ const FORCED_REFRESH_THRESHOLD = d(30).seconds.inWholeMilliseconds; const INITIAL_LOAD_TIMESTAMP_KEY = 'webUIInitialLoadTimestamp'; -AppStorage.session.setItem(INITIAL_LOAD_TIMESTAMP_KEY, Date.now()); +AppStorage.session.setItemIfMissing(INITIAL_LOAD_TIMESTAMP_KEY, Date.now()); export const WebUIUpdateChecker = () => { const { t } = useTranslation(); diff --git a/src/lib/storage/AppStorage.ts b/src/lib/storage/AppStorage.ts index b3c8e079..e84ddea9 100644 --- a/src/lib/storage/AppStorage.ts +++ b/src/lib/storage/AppStorage.ts @@ -63,6 +63,12 @@ export class Storage { this.storage.setItem(key, valueToStore); fireEvent(valueToStore as string); } + + setItemIfMissing(key: string, value: unknown, emitEvent?: boolean): void { + if (this.getItem(key) === null) { + this.setItem(key, value, emitEvent); + } + } } export class AppStorage {