import { useContext, useEffect, useState } from "react"; import { Trans, useTranslation } from "react-i18next"; import { Button, CheckboxField, Link, TextField } from "@renderer/components"; import "./settings-torbox.scss"; import { useAppSelector, useToast } from "@renderer/hooks"; import { settingsContext } from "@renderer/context"; import { LinkExternalIcon } from "@primer/octicons-react"; const torBoxReferralCode = import.meta.env.RENDERER_VITE_TORBOX_REFERRAL_CODE; const TORBOX_URL = torBoxReferralCode ? `https://torbox.app/subscription?referral=${torBoxReferralCode}` : "https://torbox.app"; const TORBOX_API_TOKEN_URL = "https://torbox.app/settings"; export function SettingsTorBox() { const userPreferences = useAppSelector( (state) => state.userPreferences.value ); const { updateUserPreferences } = useContext(settingsContext); const [isLoading, setIsLoading] = useState(false); const [form, setForm] = useState({ useTorBox: false, torBoxApiToken: null as string | null, }); const { showSuccessToast, showErrorToast } = useToast(); const { t } = useTranslation("settings"); useEffect(() => { if (userPreferences) { setForm({ useTorBox: Boolean(userPreferences.torBoxApiToken), torBoxApiToken: userPreferences.torBoxApiToken ?? null, }); } }, [userPreferences]); const handleFormSubmit: React.FormEventHandler = async ( event ) => { setIsLoading(true); event.preventDefault(); try { if (form.useTorBox) { const user = await window.electron.authenticateTorBox( form.torBoxApiToken! ); showSuccessToast( t("torbox_account_linked"), t("debrid_linked_message", { username: user.email }) ); } else { showSuccessToast(t("changes_saved")); } updateUserPreferences({ torBoxApiToken: form.useTorBox ? form.torBoxApiToken : null, }); } catch (err) { showErrorToast(t("debrid_invalid_token")); } finally { setIsLoading(false); } }; const isButtonDisabled = (form.useTorBox && !form.torBoxApiToken) || isLoading; const toggleTorBox = () => { const updatedValue = !form.useTorBox; setForm((prev) => ({ ...prev, useTorBox: updatedValue, })); if (!updatedValue) { updateUserPreferences({ torBoxApiToken: null, }); } }; return (

{t("torbox_description")}

{t("create_torbox_account")}
{form.useTorBox && ( setForm({ ...form, torBoxApiToken: event.target.value }) } placeholder={t("api_token")} rightContent={ } hint={ } /> )} ); }