feat(settings): expose Real-Debrid multi-account controls

This commit is contained in:
Sucukdeluxe
2026-08-15 21:34:28 +02:00
parent 7e65195057
commit d720c5912e
15 changed files with 316 additions and 61 deletions
+13 -3
View File
@@ -37,6 +37,7 @@ import { isRealDebridWebAccountId } from "./real-debrid-accounts";
export interface RealDebridLoginRequest {
accountId: string;
create?: boolean;
dailyLimitBytes?: number;
}
export function validateRealDebridLoginRequest(value: unknown): Required<RealDebridLoginRequest> {
@@ -44,13 +45,22 @@ export function validateRealDebridLoginRequest(value: unknown): Required<RealDeb
throw new Error("Account-Payload ist ungültig");
}
const raw = value as Record<string, unknown>;
if (Object.keys(raw).some((key) => key !== "accountId" && key !== "create")
if (Object.keys(raw).some((key) => key !== "accountId" && key !== "create" && key !== "dailyLimitBytes")
|| typeof raw.accountId !== "string"
|| !isRealDebridWebAccountId(raw.accountId)
|| (raw.create !== undefined && typeof raw.create !== "boolean")) {
|| (raw.create !== undefined && typeof raw.create !== "boolean")
|| (raw.dailyLimitBytes !== undefined && (typeof raw.dailyLimitBytes !== "number"
|| !Number.isFinite(raw.dailyLimitBytes)
|| raw.dailyLimitBytes < 0
|| raw.dailyLimitBytes > Number.MAX_SAFE_INTEGER))) {
throw new Error("Account-Payload ist ungültig");
}
return { accountId: raw.accountId.trim(), create: raw.create === true };
const create = raw.create === true;
const dailyLimitBytes = Math.floor(Number(raw.dailyLimitBytes) || 0);
if (!create && dailyLimitBytes !== 0) {
throw new Error("Account-Payload ist ungültig");
}
return { accountId: raw.accountId.trim(), create, dailyLimitBytes: create ? dailyLimitBytes : 0 };
}
export interface ElectronApi {
+4
View File
@@ -237,6 +237,10 @@ export interface RendererAccount {
export interface RendererSettings {
language: AppLanguage;
realDebridUseWebLogin: boolean;
realDebridDisabledAccountIds: string[];
realDebridAccountDailyLimitBytes: Record<string, number>;
realDebridAccountDailyUsageBytes: Record<string, number>;
realDebridAccountTotalUsageBytes: Record<string, number>;
megaDebridApiEnabled: boolean;
megaDebridWebEnabled: boolean;
megaDebridPreferApi: boolean;