From c10c3b0f95ab91a13eb0f43d3365636b87390065 Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:37:03 +0400 Subject: [PATCH] refactor: creation modal cleanup --- src/components/create-profile-dialog.tsx | 41 +++++++++++++----------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/src/components/create-profile-dialog.tsx b/src/components/create-profile-dialog.tsx index 0255d90..2d2daf0 100644 --- a/src/components/create-profile-dialog.tsx +++ b/src/components/create-profile-dialog.tsx @@ -108,7 +108,7 @@ export function CreateProfileDialog({ const handleTabChange = (value: string) => { if (value === "regular") { - setSelectedBrowser(null); + setSelectedBrowser("firefox"); } else if (value === "anti-detect") { setSelectedBrowser("camoufox"); } @@ -179,6 +179,8 @@ export function CreateProfileDialog({ { browserStr: browser }, ); + await loadDownloadedVersions(browser); + // Only update state if this browser is still the one we're loading if (loadingBrowserRef.current === browser) { // Filter to enforce stable-only creation, except Firefox Developer (nightly-only) @@ -198,12 +200,29 @@ export function CreateProfileDialog({ filtered.stable = rawReleaseTypes.stable; setReleaseTypes(filtered); } - - // Load downloaded versions for this browser - await loadDownloadedVersions(browser); } } catch (error) { console.error(`Failed to load release types for ${browser}:`, error); + + // Fallback: still load downloaded versions and derive release type from them if possible + try { + const downloaded = await loadDownloadedVersions(browser); + if (loadingBrowserRef.current === browser && downloaded.length > 0) { + const latest = downloaded[0]; + const fallback: BrowserReleaseTypes = {}; + if (browser === "firefox-developer") { + fallback.nightly = latest; + } else { + fallback.stable = latest; + } + setReleaseTypes(fallback); + } + } catch (e) { + console.error( + `Failed to load downloaded versions for ${browser}:`, + e, + ); + } } finally { // Clear loading state only if we're still loading this browser if (loadingBrowserRef.current === browser) { @@ -387,20 +406,6 @@ export function CreateProfileDialog({ isBrowserVersionAvailable, ]); - useEffect(() => { - console.log( - selectedBrowser, - selectedBrowser && isBrowserCurrentlyDownloading(selectedBrowser), - selectedBrowser && isBrowserVersionAvailable(selectedBrowser), - selectedBrowser && getBestAvailableVersion(selectedBrowser), - ); - }, [ - selectedBrowser, - isBrowserCurrentlyDownloading, - isBrowserVersionAvailable, - getBestAvailableVersion, - ]); - return (