diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index 3b227e5d..8d0225a1 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -117,7 +117,8 @@ "danger_zone_section_title": "Danger zone", "danger_zone_section_description": "Remove this game from your library or the files downloaded by Hydra", "download_in_progress": "Download in progress", - "download_paused": "Download paused" + "download_paused": "Download paused", + "last_selected_option": "Last selected option" }, "activation": { "title": "Activate Hydra", diff --git a/src/locales/pt/translation.json b/src/locales/pt/translation.json index 174abacd..a35ffb98 100644 --- a/src/locales/pt/translation.json +++ b/src/locales/pt/translation.json @@ -114,7 +114,8 @@ "danger_zone_section_title": "Zona de perigo", "danger_zone_section_description": "Remova o jogo da sua biblioteca ou os arquivos que foram baixados pelo Hydra", "download_in_progress": "Download em andamento", - "download_paused": "Download pausado" + "download_paused": "Download pausado", + "last_selected_option": "Última opção selecionada" }, "activation": { "title": "Ativação", diff --git a/src/renderer/src/pages/game-details/modals/repacks-modal.tsx b/src/renderer/src/pages/game-details/modals/repacks-modal.tsx index 5b415172..a4bb189c 100644 --- a/src/renderer/src/pages/game-details/modals/repacks-modal.tsx +++ b/src/renderer/src/pages/game-details/modals/repacks-modal.tsx @@ -1,7 +1,8 @@ -import { useContext, useEffect, useState } from "react"; +import { useCallback, useContext, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; +import parseTorrent from "parse-torrent"; -import { Button, Modal, TextField } from "@renderer/components"; +import { Badge, Button, Modal, TextField } from "@renderer/components"; import type { GameRepack } from "@types"; import * as styles from "./repacks-modal.css"; @@ -31,13 +32,22 @@ export function RepacksModal({ const [repack, setRepack] = useState(null); const [showSelectFolderModal, setShowSelectFolderModal] = useState(false); - const { repacks } = useContext(gameDetailsContext); + const [infoHash, setInfoHash] = useState(""); + + const { repacks, game } = useContext(gameDetailsContext); const { t } = useTranslation("game_details"); + const getInfoHash = useCallback(async () => { + const torrent = await parseTorrent(game?.uri ?? ""); + setInfoHash(torrent.infoHash ?? ""); + }, [game]); + useEffect(() => { setFilteredRepacks(repacks); - }, [repacks, visible]); + + if (game?.uri) getInfoHash(); + }, [repacks, visible, game, getInfoHash]); const handleRepackClick = (repack: GameRepack) => { setRepack(repack); @@ -59,6 +69,8 @@ export function RepacksModal({ ); }; + console.log(infoHash); + return ( <> {repack.title}

+ + {repack.magnet.toLowerCase().includes(infoHash) && ( + {t("last_selected_option")} + )} +

{repack.fileSize} - {repack.repacker} -{" "} {repack.uploadDate diff --git a/src/types/index.ts b/src/types/index.ts index cb21fb5d..7bb1e96f 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -107,6 +107,7 @@ export interface Game { downloader: Downloader; executablePath: string | null; lastTimePlayed: Date | null; + uri: string | null; fileSize: number; objectID: string; shop: GameShop;