From 932499f2118ba11c4c109b8f345e71bcb49521b8 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Wed, 5 Nov 2025 01:17:18 +0100 Subject: [PATCH] Reset app initial load time on page reload --- .../components/WebUIUpdateChecker.tsx | 5 ++++- src/lib/BrowserUtil.ts | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/lib/BrowserUtil.ts diff --git a/src/features/app-updates/components/WebUIUpdateChecker.tsx b/src/features/app-updates/components/WebUIUpdateChecker.tsx index 119f8bcf..6887d8d3 100644 --- a/src/features/app-updates/components/WebUIUpdateChecker.tsx +++ b/src/features/app-updates/components/WebUIUpdateChecker.tsx @@ -26,6 +26,7 @@ import { useUpdateChecker } from '@/features/app-updates/hooks/useUpdateChecker. import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { getErrorMessage, noOp } from '@/lib/HelperFunctions.ts'; import { AppStorage } from '@/lib/storage/AppStorage.ts'; +import { BrowserUtil } from '@/lib/BrowserUtil.ts'; const disabledUpdateCheck = () => Promise.resolve(); @@ -33,7 +34,9 @@ const FORCED_REFRESH_THRESHOLD = d(30).seconds.inWholeMilliseconds; const INITIAL_LOAD_TIMESTAMP_KEY = 'webUIInitialLoadTimestamp'; -AppStorage.session.setItemIfMissing(INITIAL_LOAD_TIMESTAMP_KEY, Date.now()); +if (BrowserUtil.isActualPageLoad()) { + AppStorage.session.setItem(INITIAL_LOAD_TIMESTAMP_KEY, Date.now()); +} export const WebUIUpdateChecker = () => { const { t } = useTranslation(); diff --git a/src/lib/BrowserUtil.ts b/src/lib/BrowserUtil.ts new file mode 100644 index 00000000..bed4afca --- /dev/null +++ b/src/lib/BrowserUtil.ts @@ -0,0 +1,21 @@ +/* + * Copyright (C) Contributors to the Suwayomi project + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +export class BrowserUtil { + static isActualPageLoad(): boolean { + const navEntries = performance.getEntriesByType('navigation'); + + if (!navEntries.length) { + return true; + } + + const { type } = navEntries[0] as PerformanceNavigationTiming; + + return ['reload', 'navigate'].includes(type); + } +}