From e32eda100a02d637c76e8d5d0f1db23d8ccf9dfb Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sat, 8 Aug 2026 20:08:55 +0100 Subject: [PATCH] Enhance app update checks with improved error handling and duplicate installation detection - Updated `AppUpdateProvider` to handle errors during startup checks for app updates and duplicate installations, improving robustness. - Refactored logic to ensure duplicate installation checks are integrated into the update process, providing clearer feedback to users. - Adjusted modal visibility conditions for duplicate installation prompts to streamline user experience. --- .../Dashboard/context/AppUpdateContext.jsx | 20 +++++++++++++------ src/desktop/appupdate.js | 12 +++++++++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/components/Dashboard/context/AppUpdateContext.jsx b/src/components/Dashboard/context/AppUpdateContext.jsx index da220a8..a49bc18 100644 --- a/src/components/Dashboard/context/AppUpdateContext.jsx +++ b/src/components/Dashboard/context/AppUpdateContext.jsx @@ -308,19 +308,29 @@ export const AppUpdateProvider = ({ children }) => { let cancelled = false const runStartupChecks = async () => { + let result = null + try { - const result = await checkAppUpdateResult?.() + result = await checkAppUpdateResult?.() if (!cancelled && result?.updated) { setCompletedUpdate(result) } + } catch (error) { + console.warn('[AppUpdateContext] Startup update check failed:', error) + } - const installations = await checkDuplicateInstallations?.() + try { + const installations = + result?.duplicates || (await checkDuplicateInstallations?.()) if (!cancelled && installations?.duplicatePath) { setDuplicateInstall(installations) setDuplicatePromptOpen(true) } } catch (error) { - console.warn('[AppUpdateContext] Startup update checks failed:', error) + console.warn( + '[AppUpdateContext] Duplicate installation check failed:', + error + ) } } @@ -537,9 +547,7 @@ export const AppUpdateProvider = ({ children }) => { { normalizeEngine(current.engine), )); - completedUpdateResult = { updated, previous, current }; + const duplicates = checkForDuplicateInstallations(); + + completedUpdateResult = { updated, previous, current, duplicates }; } catch (error) { console.warn("[app-update] Failed to check for a completed update.", error); - completedUpdateResult = { updated: false, previous: null, current: null }; + completedUpdateResult = { + updated: false, + previous: null, + current: null, + duplicates: checkForDuplicateInstallations(), + }; } return completedUpdateResult;