From a946cb2c21a23ffddbf370383b2d686e397f3d3f Mon Sep 17 00:00:00 2001 From: Pulse Monitor Date: Thu, 28 Aug 2025 14:13:11 +0000 Subject: [PATCH] fix: clear update cache when version changes after update - Automatically invalidate cached update info when current version changes - Prevents stale update banner after user updates Pulse - Cache now checks if version matches before using cached data --- frontend-modern/src/stores/updates.ts | 41 ++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/frontend-modern/src/stores/updates.ts b/frontend-modern/src/stores/updates.ts index fc681de8b..2bd63802f 100644 --- a/frontend-modern/src/stores/updates.ts +++ b/frontend-modern/src/stores/updates.ts @@ -53,15 +53,34 @@ const checkForUpdates = async (force = false): Promise => { if (!force && state.lastCheck && (now - state.lastCheck) < CHECK_INTERVAL) { // Use cached data if available if (state.updateInfo) { - setUpdateInfo(state.updateInfo); - setUpdateAvailable(state.updateInfo.available); - - // Check if this version was dismissed - if (state.dismissedVersion === state.updateInfo.latestVersion) { - setIsDismissed(true); + // First check if version matches (in case user updated) + try { + const currentVersion = await UpdatesAPI.getVersion(); + if (state.updateInfo.currentVersion !== currentVersion.version) { + // Version changed, invalidate cache and check again + state.updateInfo = undefined; + state.dismissedVersion = undefined; + state.lastCheck = 0; + saveState(state); + // Continue to check for updates + } else { + // Version matches, use cached data + setUpdateInfo(state.updateInfo); + setUpdateAvailable(state.updateInfo.available); + + // Check if this version was dismissed + if (state.dismissedVersion === state.updateInfo.latestVersion) { + setIsDismissed(true); + } + return; + } + } catch (e) { + // If we can't get version, continue with normal check + console.error('Failed to verify version for cache:', e); } + } else { + return; } - return; } setIsChecking(true); @@ -71,6 +90,14 @@ const checkForUpdates = async (force = false): Promise => { // First get version info to check deployment type const version = await UpdatesAPI.getVersion(); setVersionInfo(version); + + // Clear cache if version has changed (user updated) + if (state.updateInfo && state.updateInfo.currentVersion !== version.version) { + // Version changed, clear the cache + state.updateInfo = undefined; + state.dismissedVersion = undefined; + saveState(state); + } // Don't check for updates in Docker if (version.isDocker) {