mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-28 13:21:02 +00:00
feat: save torbox token
This commit is contained in:
@@ -15,6 +15,12 @@ const getUserPreferences = async () =>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (userPreferences?.torBoxApiToken) {
|
||||||
|
userPreferences.torBoxApiToken = Crypto.decrypt(
|
||||||
|
userPreferences.torBoxApiToken
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return userPreferences;
|
return userPreferences;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(() => {
|
||||||
|
|||||||
@@ -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);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -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"));
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user