From d700e2706ca0e8ac73f20bb187716930ab666323 Mon Sep 17 00:00:00 2001
From: Chubby Granny Chaser
Date: Sat, 8 Jun 2024 19:18:24 +0100
Subject: [PATCH] feat: adding last selected option to repacks modal
---
src/locales/en/translation.json | 3 ++-
src/locales/pt/translation.json | 3 ++-
.../game-details/modals/repacks-modal.tsx | 25 ++++++++++++++++---
src/types/index.ts | 1 +
4 files changed, 26 insertions(+), 6 deletions(-)
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;