feat: save torbox token

This commit is contained in:
Zamitto 2025-02-01 16:47:10 -03:00
parent e3b9b16387
commit d8e322e022
8 changed files with 27 additions and 19 deletions

View file

@ -15,6 +15,12 @@ const getUserPreferences = async () =>
); );
} }
if (userPreferences?.torBoxApiToken) {
userPreferences.torBoxApiToken = Crypto.decrypt(
userPreferences.torBoxApiToken
);
}
return userPreferences; return userPreferences;
}); });

View file

@ -30,6 +30,10 @@ const updateUserPreferences = async (
); );
} }
if (preferences.torBoxApiToken) {
preferences.torBoxApiToken = Crypto.encrypt(preferences.torBoxApiToken);
}
if (!preferences.downloadsPath) { if (!preferences.downloadsPath) {
preferences.downloadsPath = null; preferences.downloadsPath = null;
} }

View file

@ -20,6 +20,7 @@ import {
} from "./level"; } from "./level";
import { Auth, User, type UserPreferences } from "@types"; import { Auth, User, type UserPreferences } from "@types";
import { knexClient } from "./knex-client"; import { knexClient } from "./knex-client";
import { TorBoxClient } from "./services/download/torbox";
export const loadState = async () => { export const loadState = async () => {
const userPreferences = await migrateFromSqlite().then(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(); Ludusavi.addManifestToLudusaviConfig();
HydraApi.setupApi().then(() => { HydraApi.setupApi().then(() => {

View file

@ -31,6 +31,7 @@ import {
} from "@primer/octicons-react"; } from "@primer/octicons-react";
import torBoxLogo from "@renderer/assets/icons/torbox.webp"; import torBoxLogo from "@renderer/assets/icons/torbox.webp";
import { SPACING_UNIT, vars } from "@renderer/theme.css";
export interface DownloadGroupProps { export interface DownloadGroupProps {
library: LibraryGame[]; library: LibraryGame[];
@ -237,12 +238,16 @@ export function DownloadGroup({
]; ];
} }
const isResumeDisabled =
(download?.downloader === Downloader.RealDebrid &&
!userPreferences?.realDebridApiToken) ||
(download?.downloader === Downloader.TorBox &&
!userPreferences?.torBoxApiToken);
return [ return [
{ {
label: t("resume"), label: t("resume"),
disabled: disabled: isResumeDisabled,
download?.downloader === Downloader.RealDebrid &&
!userPreferences?.realDebridApiToken,
onClick: () => { onClick: () => {
resumeDownload(game.shop, game.objectId); resumeDownload(game.shop, game.objectId);
}, },

View file

@ -88,6 +88,8 @@ export function DownloadSettingsModal({
const filteredDownloaders = downloaders.filter((downloader) => { const filteredDownloaders = downloaders.filter((downloader) => {
if (downloader === Downloader.RealDebrid) if (downloader === Downloader.RealDebrid)
return userPreferences?.realDebridApiToken; return userPreferences?.realDebridApiToken;
if (downloader === Downloader.TorBox)
return userPreferences?.torBoxApiToken;
return true; return true;
}); });

View file

@ -71,6 +71,7 @@ export function SettingsDebrid() {
updateUserPreferences({ updateUserPreferences({
realDebridApiToken: form.useRealDebrid ? form.realDebridApiToken : null, realDebridApiToken: form.useRealDebrid ? form.realDebridApiToken : null,
torBoxApiToken: form.useTorBox ? form.torBoxApiToken : null,
}); });
} catch (err) { } catch (err) {
showErrorToast(t("real_debrid_invalid_token")); showErrorToast(t("real_debrid_invalid_token"));

View file

@ -55,22 +55,6 @@ export interface GameRunning {
sessionDurationInMillis: number; 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 { export interface Steam250Game {
title: string; title: string;
objectId: string; objectId: string;

View file

@ -69,6 +69,7 @@ export interface UserPreferences {
downloadsPath?: string | null; downloadsPath?: string | null;
language?: string; language?: string;
realDebridApiToken?: string | null; realDebridApiToken?: string | null;
torBoxApiToken?: string | null;
preferQuitInsteadOfHiding?: boolean; preferQuitInsteadOfHiding?: boolean;
runAtStartup?: boolean; runAtStartup?: boolean;
startMinimized?: boolean; startMinimized?: boolean;