Reset app initial load time on page reload

This commit is contained in:
schroda
2025-11-05 01:17:18 +01:00
parent 198d899b86
commit 932499f211
2 changed files with 25 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import { useUpdateChecker } from '@/features/app-updates/hooks/useUpdateChecker.
import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts'; import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts';
import { getErrorMessage, noOp } from '@/lib/HelperFunctions.ts'; import { getErrorMessage, noOp } from '@/lib/HelperFunctions.ts';
import { AppStorage } from '@/lib/storage/AppStorage.ts'; import { AppStorage } from '@/lib/storage/AppStorage.ts';
import { BrowserUtil } from '@/lib/BrowserUtil.ts';
const disabledUpdateCheck = () => Promise.resolve(); const disabledUpdateCheck = () => Promise.resolve();
@@ -33,7 +34,9 @@ const FORCED_REFRESH_THRESHOLD = d(30).seconds.inWholeMilliseconds;
const INITIAL_LOAD_TIMESTAMP_KEY = 'webUIInitialLoadTimestamp'; 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 = () => { export const WebUIUpdateChecker = () => {
const { t } = useTranslation(); const { t } = useTranslation();

21
src/lib/BrowserUtil.ts Normal file
View File

@@ -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);
}
}