fix: properly track download progress

This commit is contained in:
zhom
2026-03-02 06:02:12 +04:00
parent 4a56575dbd
commit a723c8b30b
2 changed files with 16 additions and 11 deletions
+5 -4
View File
@@ -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) => {
+11 -7
View File
@@ -49,7 +49,9 @@ export function useBrowserDownload() {
const [availableVersions, setAvailableVersions] = useState<GithubRelease[]>(
[],
);
const [downloadedVersions, setDownloadedVersions] = useState<string[]>([]);
const [downloadedVersionsMap, setDownloadedVersionsMap] = useState<
Record<string, string[]>
>({});
const [downloadingBrowsers, setDownloadingBrowsers] = useState<Set<string>>(
new Set(),
);
@@ -166,12 +168,12 @@ export function useBrowserDownload() {
const loadDownloadedVersions = useCallback(async (browserStr: string) => {
try {
const downloadedVersions = await invoke<string[]>(
const versions = await invoke<string[]>(
"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,