From d8e322e022f03702ea337f2c450fedeaa4aea701 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:47:10 -0300 Subject: [PATCH] feat: save torbox token --- .../user-preferences/get-user-preferences.ts | 6 ++++++ .../user-preferences/update-user-preferences.ts | 4 ++++ src/main/main.ts | 5 +++++ .../src/pages/downloads/download-group.tsx | 11 ++++++++--- .../modals/download-settings-modal.tsx | 2 ++ .../src/pages/settings/settings-debrid.tsx | 1 + src/types/index.ts | 16 ---------------- src/types/level.types.ts | 1 + 8 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/main/events/user-preferences/get-user-preferences.ts b/src/main/events/user-preferences/get-user-preferences.ts index b40d6780..c67f72b9 100644 --- a/src/main/events/user-preferences/get-user-preferences.ts +++ b/src/main/events/user-preferences/get-user-preferences.ts @@ -15,6 +15,12 @@ const getUserPreferences = async () => ); } + if (userPreferences?.torBoxApiToken) { + userPreferences.torBoxApiToken = Crypto.decrypt( + userPreferences.torBoxApiToken + ); + } + return userPreferences; }); diff --git a/src/main/events/user-preferences/update-user-preferences.ts b/src/main/events/user-preferences/update-user-preferences.ts index 31193558..275a6f27 100644 --- a/src/main/events/user-preferences/update-user-preferences.ts +++ b/src/main/events/user-preferences/update-user-preferences.ts @@ -30,6 +30,10 @@ const updateUserPreferences = async ( ); } + if (preferences.torBoxApiToken) { + preferences.torBoxApiToken = Crypto.encrypt(preferences.torBoxApiToken); + } + if (!preferences.downloadsPath) { preferences.downloadsPath = null; } diff --git a/src/main/main.ts b/src/main/main.ts index 0777a28e..4824a1a5 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -20,6 +20,7 @@ import { } from "./level"; import { Auth, User, type UserPreferences } from "@types"; import { knexClient } from "./knex-client"; +import { TorBoxClient } from "./services/download/torbox"; export const loadState = async () => { const userPreferences = await migrateFromSqlite().then(async () => { @@ -42,6 +43,10 @@ export const loadState = async () => { ); } + if (userPreferences?.torBoxApiToken) { + TorBoxClient.authorize(Crypto.decrypt(userPreferences.torBoxApiToken)); + } + Ludusavi.addManifestToLudusaviConfig(); HydraApi.setupApi().then(() => { diff --git a/src/renderer/src/pages/downloads/download-group.tsx b/src/renderer/src/pages/downloads/download-group.tsx index 0bcbbdbe..d84d6601 100644 --- a/src/renderer/src/pages/downloads/download-group.tsx +++ b/src/renderer/src/pages/downloads/download-group.tsx @@ -31,6 +31,7 @@ import { } from "@primer/octicons-react"; import torBoxLogo from "@renderer/assets/icons/torbox.webp"; +import { SPACING_UNIT, vars } from "@renderer/theme.css"; export interface DownloadGroupProps { library: LibraryGame[]; @@ -237,12 +238,16 @@ export function DownloadGroup({ ]; } + const isResumeDisabled = + (download?.downloader === Downloader.RealDebrid && + !userPreferences?.realDebridApiToken) || + (download?.downloader === Downloader.TorBox && + !userPreferences?.torBoxApiToken); + return [ { label: t("resume"), - disabled: - download?.downloader === Downloader.RealDebrid && - !userPreferences?.realDebridApiToken, + disabled: isResumeDisabled, onClick: () => { resumeDownload(game.shop, game.objectId); }, diff --git a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx index 89283ebb..dae20d4c 100644 --- a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx +++ b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx @@ -88,6 +88,8 @@ export function DownloadSettingsModal({ const filteredDownloaders = downloaders.filter((downloader) => { if (downloader === Downloader.RealDebrid) return userPreferences?.realDebridApiToken; + if (downloader === Downloader.TorBox) + return userPreferences?.torBoxApiToken; return true; }); diff --git a/src/renderer/src/pages/settings/settings-debrid.tsx b/src/renderer/src/pages/settings/settings-debrid.tsx index 9d63e68a..ac6a09ff 100644 --- a/src/renderer/src/pages/settings/settings-debrid.tsx +++ b/src/renderer/src/pages/settings/settings-debrid.tsx @@ -71,6 +71,7 @@ export function SettingsDebrid() { updateUserPreferences({ realDebridApiToken: form.useRealDebrid ? form.realDebridApiToken : null, + torBoxApiToken: form.useTorBox ? form.torBoxApiToken : null, }); } catch (err) { showErrorToast(t("real_debrid_invalid_token")); diff --git a/src/types/index.ts b/src/types/index.ts index 75000f36..1f189a8d 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -55,22 +55,6 @@ export interface GameRunning { sessionDurationInMillis: number; } -export interface UserPreferences { - downloadsPath: string | null; - language: string; - downloadNotificationsEnabled: boolean; - repackUpdatesNotificationsEnabled: boolean; - achievementNotificationsEnabled: boolean; - realDebridApiToken: string | null; - torBoxApiToken: string | null; - preferQuitInsteadOfHiding: boolean; - runAtStartup: boolean; - startMinimized: boolean; - disableNsfwAlert: boolean; - seedAfterDownloadComplete: boolean; - showHiddenAchievementsDescription: boolean; -} - export interface Steam250Game { title: string; objectId: string; diff --git a/src/types/level.types.ts b/src/types/level.types.ts index 28d8b0b6..aa28d9dd 100644 --- a/src/types/level.types.ts +++ b/src/types/level.types.ts @@ -69,6 +69,7 @@ export interface UserPreferences { downloadsPath?: string | null; language?: string; realDebridApiToken?: string | null; + torBoxApiToken?: string | null; preferQuitInsteadOfHiding?: boolean; runAtStartup?: boolean; startMinimized?: boolean;