diff --git a/src/components/create-profile-dialog.tsx b/src/components/create-profile-dialog.tsx index bbc45cc..bb4f94a 100644 --- a/src/components/create-profile-dialog.tsx +++ b/src/components/create-profile-dialog.tsx @@ -179,7 +179,7 @@ export function CreateProfileDialog({ downloadBrowser, loadDownloadedVersions, isVersionDownloaded, - downloadedVersions, + downloadedVersionsMap, } = useBrowserDownload(); const loadSupportedBrowsers = useCallback(async () => { @@ -344,8 +344,9 @@ export function CreateProfileDialog({ if (bestVersion && isVersionDownloaded(bestVersion.version)) { return bestVersion; } - if (downloadedVersions.length > 0) { - const fallbackVersion = downloadedVersions[0]; + const browserDownloaded = downloadedVersionsMap[browserType ?? ""] ?? []; + if (browserDownloaded.length > 0) { + const fallbackVersion = browserDownloaded[0]; const releaseType = browserType === "firefox-developer" ? "nightly" : "stable"; return { @@ -355,7 +356,7 @@ export function CreateProfileDialog({ } return null; }, - [getBestAvailableVersion, isVersionDownloaded, downloadedVersions], + [getBestAvailableVersion, isVersionDownloaded, downloadedVersionsMap], ); const handleDownload = async (browserStr: string) => { diff --git a/src/hooks/use-browser-download.ts b/src/hooks/use-browser-download.ts index 77bffc0..a4a6227 100644 --- a/src/hooks/use-browser-download.ts +++ b/src/hooks/use-browser-download.ts @@ -49,7 +49,9 @@ export function useBrowserDownload() { const [availableVersions, setAvailableVersions] = useState( [], ); - const [downloadedVersions, setDownloadedVersions] = useState([]); + const [downloadedVersionsMap, setDownloadedVersionsMap] = useState< + Record + >({}); const [downloadingBrowsers, setDownloadingBrowsers] = useState>( new Set(), ); @@ -166,12 +168,12 @@ export function useBrowserDownload() { const loadDownloadedVersions = useCallback(async (browserStr: string) => { try { - const downloadedVersions = await invoke( + const versions = await invoke( "get_downloaded_browser_versions", { browserStr }, ); - setDownloadedVersions(downloadedVersions); - return downloadedVersions; + setDownloadedVersionsMap((prev) => ({ ...prev, [browserStr]: versions })); + return versions; } catch (error) { console.error("Failed to load downloaded versions:", error); throw error; @@ -243,9 +245,11 @@ export function useBrowserDownload() { const isVersionDownloaded = useCallback( (version: string) => { - return downloadedVersions.includes(version); + return Object.values(downloadedVersionsMap).some((versions) => + versions.includes(version), + ); }, - [downloadedVersions], + [downloadedVersionsMap], ); // Check if a browser type is currently downloading @@ -434,7 +438,7 @@ export function useBrowserDownload() { return { availableVersions, - downloadedVersions, + downloadedVersionsMap, isDownloading, isBrowserDownloading, downloadingBrowsers,