From 845e9f28adb60288da277cfd35b002483d269a4d Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Tue, 17 Jun 2025 16:29:42 +0400 Subject: [PATCH] fix: don't let the user create profile or change version if latest version not downloaded --- src/components/change-version-dialog.tsx | 92 ++++++++++++++++++++---- src/components/create-profile-dialog.tsx | 57 +++++++++------ 2 files changed, 113 insertions(+), 36 deletions(-) diff --git a/src/components/change-version-dialog.tsx b/src/components/change-version-dialog.tsx index 3ef049a..f633a93 100644 --- a/src/components/change-version-dialog.tsx +++ b/src/components/change-version-dialog.tsx @@ -164,13 +164,60 @@ export function ChangeVersionDialog({ - {!releaseTypes.stable || !releaseTypes.nightly ? ( + {!releaseTypes.stable && !releaseTypes.nightly ? ( - Only {profile.release_type} releases are available for{" "} + No releases are available for{" "} {getBrowserDisplayName(profile.browser)}. + ) : !releaseTypes.stable || !releaseTypes.nightly ? ( +
+ + + Only {profile.release_type} releases are available for{" "} + {getBrowserDisplayName(profile.browser)}. + + +
+ + {isLoadingReleaseTypes ? ( +
+ Loading release types... +
+ ) : ( +
+ {selectedReleaseType && + selectedReleaseType !== profile.release_type && + selectedVersion && + !isVersionDownloaded(selectedVersion) && ( + + + You must download{" "} + {getBrowserDisplayName(profile.browser)}{" "} + {selectedVersion} before switching to this release + type. Use the download button above to get the + latest version. + + + )} + + { + void handleDownload(); + }} + placeholder="Select release type..." + downloadedVersions={downloadedVersions} + /> +
+ )} +
+
) : (
@@ -179,18 +226,35 @@ export function ChangeVersionDialog({ Loading release types...
) : ( - { - void handleDownload(); - }} - placeholder="Select release type..." - downloadedVersions={downloadedVersions} - /> +
+ {selectedReleaseType && + selectedReleaseType !== profile.release_type && + selectedVersion && + !isVersionDownloaded(selectedVersion) && ( + + + You must download{" "} + {getBrowserDisplayName(profile.browser)}{" "} + {selectedVersion} before switching to this release + type. Use the download button above to get the latest + version. + + + )} + + { + void handleDownload(); + }} + placeholder="Select release type..." + downloadedVersions={downloadedVersions} + /> +
)} )} diff --git a/src/components/create-profile-dialog.tsx b/src/components/create-profile-dialog.tsx index f3e2219..da27c15 100644 --- a/src/components/create-profile-dialog.tsx +++ b/src/components/create-profile-dialog.tsx @@ -93,6 +93,7 @@ export function CreateProfileDialog({ isDownloading, downloadedVersions, loadDownloadedVersions, + isVersionDownloaded, } = useBrowserDownload(); const { @@ -280,6 +281,7 @@ export function CreateProfileDialog({ selectedBrowser && selectedReleaseType && selectedVersion && + isVersionDownloaded(selectedVersion) && (!proxyEnabled || isProxyDisabled || (proxyHost && proxyPort)) && !nameError; @@ -370,37 +372,48 @@ export function CreateProfileDialog({ - {selectedBrowser && - (!releaseTypes.stable || !releaseTypes.nightly) ? ( - - - Only {(releaseTypes.stable && "Stable") ?? "Nightly"} releases - are available for {getBrowserDisplayName(selectedBrowser)}. - - - ) : ( + {selectedBrowser ? (
{isLoadingReleaseTypes ? (
Loading release types...
+ ) : Object.keys(releaseTypes).length === 0 ? ( + + + No releases are available for{" "} + {getBrowserDisplayName(selectedBrowser)}. + + ) : ( - { - void handleDownload(); - }} - placeholder="Select release type..." - downloadedVersions={downloadedVersions} - /> +
+ {(!releaseTypes.stable || !releaseTypes.nightly) && ( + + + Only {(releaseTypes.stable && "Stable") ?? "Nightly"}{" "} + releases are available for{" "} + {getBrowserDisplayName(selectedBrowser)}. + + + )} + + { + void handleDownload(); + }} + placeholder="Select release type..." + downloadedVersions={downloadedVersions} + /> +
)}
- )} + ) : null} {/* Proxy Settings */}