mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-04-22 20:06:18 +02:00
fix: properly track download progress
This commit is contained in:
@@ -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) => {
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user