feat: using retry system to connect to aria2

This commit is contained in:
Chubby Granny Chaser 2024-05-29 21:50:35 +01:00
parent 85516c1744
commit ffb3d79954
No known key found for this signature in database
34 changed files with 243 additions and 317 deletions

View file

@ -15,6 +15,7 @@ import { BinaryNotFoundModal } from "../shared-modals/binary-not-found-modal";
import * as styles from "./downloads.css";
import { DeleteModal } from "./delete-modal";
import { Downloader, formatBytes } from "@shared";
import { DOWNLOADER_NAME } from "@renderer/constants";
export function Downloads() {
const { library, updateLibrary } = useLibrary();
@ -55,7 +56,7 @@ export function Downloads() {
});
const getFinalDownloadSize = (game: Game) => {
const isGameDownloading = lastPacket?.game.id === game?.id;
const isGameDownloading = lastPacket?.game.id === game.id;
if (!game) return "N/A";
if (game.fileSize) return formatBytes(game.fileSize);
@ -66,16 +67,11 @@ export function Downloads() {
return game.repack?.fileSize ?? "N/A";
};
const downloaderName = {
[Downloader.RealDebrid]: t("real_debrid"),
[Downloader.Torrent]: t("torrent"),
};
const getGameInfo = (game: Game) => {
const isGameDownloading = lastPacket?.game.id === game?.id;
const isGameDownloading = lastPacket?.game.id === game.id;
const finalDownloadSize = getFinalDownloadSize(game);
if (isGameDeleting(game?.id)) {
if (isGameDeleting(game.id)) {
return <p>{t("deleting")}</p>;
}
@ -98,16 +94,16 @@ export function Downloads() {
);
}
if (game?.progress === 1) {
if (game.progress === 1) {
return (
<>
<p>{game?.repack?.title}</p>
<p>{game.repack?.title}</p>
<p>{t("completed")}</p>
</>
);
}
if (game?.status === "paused") {
if (game.status === "paused") {
return (
<>
<p>{formatDownloadProgress(game.progress)}</p>
@ -116,7 +112,19 @@ export function Downloads() {
);
}
return <p>{t(game?.status)}</p>;
if (game.status === "active") {
return (
<>
<p>{formatDownloadProgress(game.progress)}</p>
<p>
{formatBytes(game.bytesDownloaded)} / {finalDownloadSize}
</p>
</>
);
}
return <p>{t(game.status)}</p>;
};
const openDeleteModal = (gameId: number) => {
@ -125,37 +133,11 @@ export function Downloads() {
};
const getGameActions = (game: Game) => {
const isGameDownloading = lastPacket?.game.id === game?.id;
const isGameDownloading = lastPacket?.game.id === game.id;
const deleting = isGameDeleting(game.id);
if (isGameDownloading) {
return (
<>
<Button onClick={() => pauseDownload(game.id)} theme="outline">
{t("pause")}
</Button>
<Button onClick={() => cancelDownload(game.id)} theme="outline">
{t("cancel")}
</Button>
</>
);
}
if (game?.status === "paused") {
return (
<>
<Button onClick={() => resumeDownload(game.id)} theme="outline">
{t("resume")}
</Button>
<Button onClick={() => cancelDownload(game.id)} theme="outline">
{t("cancel")}
</Button>
</>
);
}
if (game?.progress === 1) {
if (game.progress === 1) {
return (
<>
<Button
@ -173,6 +155,32 @@ export function Downloads() {
);
}
if (isGameDownloading || game.status === "active") {
return (
<>
<Button onClick={() => pauseDownload(game.id)} theme="outline">
{t("pause")}
</Button>
<Button onClick={() => cancelDownload(game.id)} theme="outline">
{t("cancel")}
</Button>
</>
);
}
if (game.status === "paused") {
return (
<>
<Button onClick={() => resumeDownload(game.id)} theme="outline">
{t("resume")}
</Button>
<Button onClick={() => cancelDownload(game.id)} theme="outline">
{t("cancel")}
</Button>
</>
);
}
return (
<>
<Button
@ -243,7 +251,7 @@ export function Downloads() {
<div className={styles.downloadCoverContent}>
<small className={styles.downloaderName}>
{downloaderName[game?.downloader]}
{DOWNLOADER_NAME[game.downloader]}
</small>
</div>
</div>