mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-07-31 16:37:29 +02:00
fix: properly track download progress
This commit is contained in:
@@ -179,7 +179,7 @@ export function CreateProfileDialog({
|
|||||||
downloadBrowser,
|
downloadBrowser,
|
||||||
loadDownloadedVersions,
|
loadDownloadedVersions,
|
||||||
isVersionDownloaded,
|
isVersionDownloaded,
|
||||||
downloadedVersions,
|
downloadedVersionsMap,
|
||||||
} = useBrowserDownload();
|
} = useBrowserDownload();
|
||||||
|
|
||||||
const loadSupportedBrowsers = useCallback(async () => {
|
const loadSupportedBrowsers = useCallback(async () => {
|
||||||
@@ -344,8 +344,9 @@ export function CreateProfileDialog({
|
|||||||
if (bestVersion && isVersionDownloaded(bestVersion.version)) {
|
if (bestVersion && isVersionDownloaded(bestVersion.version)) {
|
||||||
return bestVersion;
|
return bestVersion;
|
||||||
}
|
}
|
||||||
if (downloadedVersions.length > 0) {
|
const browserDownloaded = downloadedVersionsMap[browserType ?? ""] ?? [];
|
||||||
const fallbackVersion = downloadedVersions[0];
|
if (browserDownloaded.length > 0) {
|
||||||
|
const fallbackVersion = browserDownloaded[0];
|
||||||
const releaseType =
|
const releaseType =
|
||||||
browserType === "firefox-developer" ? "nightly" : "stable";
|
browserType === "firefox-developer" ? "nightly" : "stable";
|
||||||
return {
|
return {
|
||||||
@@ -355,7 +356,7 @@ export function CreateProfileDialog({
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
[getBestAvailableVersion, isVersionDownloaded, downloadedVersions],
|
[getBestAvailableVersion, isVersionDownloaded, downloadedVersionsMap],
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleDownload = async (browserStr: string) => {
|
const handleDownload = async (browserStr: string) => {
|
||||||
|
|||||||
@@ -49,7 +49,9 @@ export function useBrowserDownload() {
|
|||||||
const [availableVersions, setAvailableVersions] = useState<GithubRelease[]>(
|
const [availableVersions, setAvailableVersions] = useState<GithubRelease[]>(
|
||||||
[],
|
[],
|
||||||
);
|
);
|
||||||
const [downloadedVersions, setDownloadedVersions] = useState<string[]>([]);
|
const [downloadedVersionsMap, setDownloadedVersionsMap] = useState<
|
||||||
|
Record<string, string[]>
|
||||||
|
>({});
|
||||||
const [downloadingBrowsers, setDownloadingBrowsers] = useState<Set<string>>(
|
const [downloadingBrowsers, setDownloadingBrowsers] = useState<Set<string>>(
|
||||||
new Set(),
|
new Set(),
|
||||||
);
|
);
|
||||||
@@ -166,12 +168,12 @@ export function useBrowserDownload() {
|
|||||||
|
|
||||||
const loadDownloadedVersions = useCallback(async (browserStr: string) => {
|
const loadDownloadedVersions = useCallback(async (browserStr: string) => {
|
||||||
try {
|
try {
|
||||||
const downloadedVersions = await invoke<string[]>(
|
const versions = await invoke<string[]>(
|
||||||
"get_downloaded_browser_versions",
|
"get_downloaded_browser_versions",
|
||||||
{ browserStr },
|
{ browserStr },
|
||||||
);
|
);
|
||||||
setDownloadedVersions(downloadedVersions);
|
setDownloadedVersionsMap((prev) => ({ ...prev, [browserStr]: versions }));
|
||||||
return downloadedVersions;
|
return versions;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Failed to load downloaded versions:", error);
|
console.error("Failed to load downloaded versions:", error);
|
||||||
throw error;
|
throw error;
|
||||||
@@ -243,9 +245,11 @@ export function useBrowserDownload() {
|
|||||||
|
|
||||||
const isVersionDownloaded = useCallback(
|
const isVersionDownloaded = useCallback(
|
||||||
(version: string) => {
|
(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
|
// Check if a browser type is currently downloading
|
||||||
@@ -434,7 +438,7 @@ export function useBrowserDownload() {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
availableVersions,
|
availableVersions,
|
||||||
downloadedVersions,
|
downloadedVersionsMap,
|
||||||
isDownloading,
|
isDownloading,
|
||||||
isBrowserDownloading,
|
isBrowserDownloading,
|
||||||
downloadingBrowsers,
|
downloadingBrowsers,
|
||||||
|
|||||||
Reference in New Issue
Block a user