feat: own tab to torbox

This commit is contained in:
Zamitto 2025-02-01 17:42:49 -03:00
parent 7fbaea15e8
commit ebc70ce28f
33 changed files with 256 additions and 141 deletions

View File

@ -236,13 +236,13 @@
"behavior": "السلوك", "behavior": "السلوك",
"download_sources": "مصادر التنزيل", "download_sources": "مصادر التنزيل",
"language": "اللغة", "language": "اللغة",
"real_debrid_api_token": "رمز API", "api_token": "رمز API",
"enable_real_debrid": "تفعيل Real-Debrid", "enable_real_debrid": "تفعيل Real-Debrid",
"real_debrid_description": "Real-Debrid هو أداة تنزيل غير مقيدة تتيح لك تنزيل الملفات بسرعة، مقيدة فقط بسرعة الإنترنت لديك.", "real_debrid_description": "Real-Debrid هو أداة تنزيل غير مقيدة تتيح لك تنزيل الملفات بسرعة، مقيدة فقط بسرعة الإنترنت لديك.",
"real_debrid_invalid_token": "رمز API غير صالح", "debrid_invalid_token": "رمز API غير صالح",
"real_debrid_api_token_hint": "يمكنك الحصول على رمز API الخاص بك <0>هنا</0>", "debrid_api_token_hint": "يمكنك الحصول على رمز API الخاص بك <0>هنا</0>",
"real_debrid_free_account_error": "الحساب \"{{username}}\" هو حساب مجاني. يرجى الاشتراك في Real-Debrid", "real_debrid_free_account_error": "الحساب \"{{username}}\" هو حساب مجاني. يرجى الاشتراك في Real-Debrid",
"real_debrid_linked_message": "تم ربط الحساب \"{{username}}\"", "debrid_linked_message": "تم ربط الحساب \"{{username}}\"",
"save_changes": "حفظ التغييرات", "save_changes": "حفظ التغييرات",
"changes_saved": "تم حفظ التغييرات بنجاح", "changes_saved": "تم حفظ التغييرات بنجاح",
"download_sources_description": "سيقوم Hydra بجلب روابط التنزيل من هذه المصادر. يجب أن يكون عنوان URL المصدر رابطًا مباشرًا لملف .json يحتوي على روابط التنزيل.", "download_sources_description": "سيقوم Hydra بجلب روابط التنزيل من هذه المصادر. يجب أن يكون عنوان URL المصدر رابطًا مباشرًا لملف .json يحتوي على روابط التنزيل.",

View File

@ -230,13 +230,13 @@
"behavior": "Поведение", "behavior": "Поведение",
"download_sources": "Източници за изтегляне", "download_sources": "Източници за изтегляне",
"language": "Език", "language": "Език",
"real_debrid_api_token": "API Токен", "api_token": "API Токен",
"enable_real_debrid": "Включи Real-Debrid", "enable_real_debrid": "Включи Real-Debrid",
"real_debrid_description": "Real-Debrid е неограничен даунлоудър, който ви позволява бързо да изтегляте файлове, ограничени само от скоростта на интернет..", "real_debrid_description": "Real-Debrid е неограничен даунлоудър, който ви позволява бързо да изтегляте файлове, ограничени само от скоростта на интернет..",
"real_debrid_invalid_token": "Невалиден API токен", "debrid_invalid_token": "Невалиден API токен",
"real_debrid_api_token_hint": "Вземете своя API токен <0>тук</0>", "debrid_api_token_hint": "Вземете своя API токен <0>тук</0>",
"real_debrid_free_account_error": "Акаунтът \"{{username}}\" е безплатен акаунт. Моля абонирай се за Real-Debrid", "real_debrid_free_account_error": "Акаунтът \"{{username}}\" е безплатен акаунт. Моля абонирай се за Real-Debrid",
"real_debrid_linked_message": "Акаунтът \"{{username}}\" е свързан", "debrid_linked_message": "Акаунтът \"{{username}}\" е свързан",
"save_changes": "Запази промените", "save_changes": "Запази промените",
"changes_saved": "Промените са успешно запазни", "changes_saved": "Промените са успешно запазни",
"download_sources_description": "Hydra ще извлича връзките за изтегляне от тези източници. URL адресът на източника трябва да е директна връзка към .json файл, съдържащ връзките за изтегляне.", "download_sources_description": "Hydra ще извлича връзките за изтегляне от тези източници. URL адресът на източника трябва да е директна връзка към .json файл, съдържащ връзките за изтегляне.",

View File

@ -161,13 +161,13 @@
"behavior": "Comportament", "behavior": "Comportament",
"download_sources": "Fonts de descàrrega", "download_sources": "Fonts de descàrrega",
"language": "Idioma", "language": "Idioma",
"real_debrid_api_token": "Testimoni API", "api_token": "Testimoni API",
"enable_real_debrid": "Activa el Real Debrid", "enable_real_debrid": "Activa el Real Debrid",
"real_debrid_description": "Real-Debrid és un programa de descàrrega sense restriccions que us permet descarregar fitxers a l'instant i al màxim de la vostra velocitat d'Internet.", "real_debrid_description": "Real-Debrid és un programa de descàrrega sense restriccions que us permet descarregar fitxers a l'instant i al màxim de la vostra velocitat d'Internet.",
"real_debrid_invalid_token": "Invalida el testimoni de l'API", "debrid_invalid_token": "Invalida el testimoni de l'API",
"real_debrid_api_token_hint": "Pots obtenir la teva clau de l'API <0>aquí</0>.", "debrid_api_token_hint": "Pots obtenir la teva clau de l'API <0>aquí</0>.",
"real_debrid_free_account_error": "L'usuari \"{{username}}\" és un compte gratuït. Si us plau subscriu-te a Real-Debrid", "real_debrid_free_account_error": "L'usuari \"{{username}}\" és un compte gratuït. Si us plau subscriu-te a Real-Debrid",
"real_debrid_linked_message": "Compte \"{{username}}\" vinculat", "debrid_linked_message": "Compte \"{{username}}\" vinculat",
"save_changes": "Desa els canvis", "save_changes": "Desa els canvis",
"changes_saved": "Els canvis s'han desat correctament", "changes_saved": "Els canvis s'han desat correctament",
"download_sources_description": "Hydra buscarà els enllaços de descàrrega d'aquestes fonts. L'URL d'origen ha de ser un enllaç directe a un fitxer .json que contingui els enllaços de descàrrega.", "download_sources_description": "Hydra buscarà els enllaços de descàrrega d'aquestes fonts. L'URL d'origen ha de ser un enllaç directe a un fitxer .json que contingui els enllaços de descàrrega.",

View File

@ -214,13 +214,13 @@
"behavior": "Chování", "behavior": "Chování",
"download_sources": "Zdroje stahování", "download_sources": "Zdroje stahování",
"language": "Jazyk", "language": "Jazyk",
"real_debrid_api_token": "API Token", "api_token": "API Token",
"enable_real_debrid": "Povolit Real-Debrid", "enable_real_debrid": "Povolit Real-Debrid",
"real_debrid_description": "Real-Debrid je neomezený správce stahování, který umožňuje stahovat soubory v nejvyšší rychlosti vašeho internetu.", "real_debrid_description": "Real-Debrid je neomezený správce stahování, který umožňuje stahovat soubory v nejvyšší rychlosti vašeho internetu.",
"real_debrid_invalid_token": "Neplatný API token", "debrid_invalid_token": "Neplatný API token",
"real_debrid_api_token_hint": "API token můžeš sehnat <0>zde</0>", "debrid_api_token_hint": "API token můžeš sehnat <0>zde</0>",
"real_debrid_free_account_error": "Účet \"{{username}}\" má základní úroveň. Prosím předplaťte si Real-Debrid", "real_debrid_free_account_error": "Účet \"{{username}}\" má základní úroveň. Prosím předplaťte si Real-Debrid",
"real_debrid_linked_message": "Účet \"{{username}}\" je propojen", "debrid_linked_message": "Účet \"{{username}}\" je propojen",
"save_changes": "Uložit změny", "save_changes": "Uložit změny",
"changes_saved": "Změny úspěšně uloženy", "changes_saved": "Změny úspěšně uloženy",
"download_sources_description": "Hydra bude odsud sbírat soubory. Zdrojový odkaz musí být .json soubor obsahující odkazy na soubory.", "download_sources_description": "Hydra bude odsud sbírat soubory. Zdrojový odkaz musí být .json soubor obsahující odkazy na soubory.",

View File

@ -177,13 +177,13 @@
"behavior": "Opførsel", "behavior": "Opførsel",
"download_sources": "Download kilder", "download_sources": "Download kilder",
"language": "Sprog", "language": "Sprog",
"real_debrid_api_token": "API nøgle", "api_token": "API nøgle",
"enable_real_debrid": "Slå Real-Debrid til", "enable_real_debrid": "Slå Real-Debrid til",
"real_debrid_description": "Real-Debrid er en ubegrænset downloader der gør det muligt for dig at downloade filer med det samme og med den bedste udnyttelse af din internet hastighed.", "real_debrid_description": "Real-Debrid er en ubegrænset downloader der gør det muligt for dig at downloade filer med det samme og med den bedste udnyttelse af din internet hastighed.",
"real_debrid_invalid_token": "Ugyldig API nøgle", "debrid_invalid_token": "Ugyldig API nøgle",
"real_debrid_api_token_hint": "Du kan få din API nøgle <0>her</0>", "debrid_api_token_hint": "Du kan få din API nøgle <0>her</0>",
"real_debrid_free_account_error": "Brugeren \"{{username}}\" er en gratis bruger. Venligst abbonér på Real-Debrid", "real_debrid_free_account_error": "Brugeren \"{{username}}\" er en gratis bruger. Venligst abbonér på Real-Debrid",
"real_debrid_linked_message": "Brugeren \"{{username}}\" er forbundet", "debrid_linked_message": "Brugeren \"{{username}}\" er forbundet",
"save_changes": "Gem ændringer", "save_changes": "Gem ændringer",
"changes_saved": "Ændringer gemt successfuldt", "changes_saved": "Ændringer gemt successfuldt",
"download_sources_description": "Hydra vil hente download links fra disse kilder. Kilde URLen skal være et direkte link til en .json fil der indeholder download linkene.", "download_sources_description": "Hydra vil hente download links fra disse kilder. Kilde URLen skal være et direkte link til en .json fil der indeholder download linkene.",

View File

@ -161,13 +161,13 @@
"behavior": "Verhalten", "behavior": "Verhalten",
"download_sources": "Download-Quellen", "download_sources": "Download-Quellen",
"language": "Sprache", "language": "Sprache",
"real_debrid_api_token": "API Token", "api_token": "API Token",
"enable_real_debrid": "Real-Debrid aktivieren", "enable_real_debrid": "Real-Debrid aktivieren",
"real_debrid_description": "Real-Debrid ist ein unrestriktiver Downloader, der es dir ermöglicht Dateien sofort und mit deiner maximalen Internetgeschwindigkeit herunterzuladen.", "real_debrid_description": "Real-Debrid ist ein unrestriktiver Downloader, der es dir ermöglicht Dateien sofort und mit deiner maximalen Internetgeschwindigkeit herunterzuladen.",
"real_debrid_invalid_token": "API token nicht gültig", "debrid_invalid_token": "API token nicht gültig",
"real_debrid_api_token_hint": "<0>Hier</0> kannst du dir deinen API Token holen", "debrid_api_token_hint": "<0>Hier</0> kannst du dir deinen API Token holen",
"real_debrid_free_account_error": "Das Konto \"{{username}}\" ist ein gratis account. Bitte abonniere Real-Debrid", "real_debrid_free_account_error": "Das Konto \"{{username}}\" ist ein gratis account. Bitte abonniere Real-Debrid",
"real_debrid_linked_message": "Konto \"{{username}}\" verknüpft", "debrid_linked_message": "Konto \"{{username}}\" verknüpft",
"save_changes": "Änderungen speichern", "save_changes": "Änderungen speichern",
"changes_saved": "Änderungen erfolgreich gespeichert", "changes_saved": "Änderungen erfolgreich gespeichert",
"download_sources_description": "Hydra wird die Download-Links von diesen Quellen abrufen. Die Quell-URL muss ein direkter Link zu einer .json Datei, welche die Download-Links enthält, sein.", "download_sources_description": "Hydra wird die Download-Links von diesen Quellen abrufen. Die Quell-URL muss ein direkter Link zu einer .json Datei, welche die Download-Links enthält, sein.",

View File

@ -236,13 +236,13 @@
"behavior": "Behavior", "behavior": "Behavior",
"download_sources": "Download sources", "download_sources": "Download sources",
"language": "Language", "language": "Language",
"real_debrid_api_token": "API Token", "api_token": "API Token",
"enable_real_debrid": "Enable Real-Debrid", "enable_real_debrid": "Enable Real-Debrid",
"real_debrid_description": "Real-Debrid is an unrestricted downloader that allows you to quickly download files, only limited by your internet speed.", "real_debrid_description": "Real-Debrid is an unrestricted downloader that allows you to quickly download files, only limited by your internet speed.",
"real_debrid_invalid_token": "Invalid API token", "debrid_invalid_token": "Invalid API token",
"real_debrid_api_token_hint": "You can get your API token <0>here</0>", "debrid_api_token_hint": "You can get your API token <0>here</0>",
"real_debrid_free_account_error": "The account \"{{username}}\" is a free account. Please subscribe to Real-Debrid", "real_debrid_free_account_error": "The account \"{{username}}\" is a free account. Please subscribe to Real-Debrid",
"real_debrid_linked_message": "Account \"{{username}}\" linked", "debrid_linked_message": "Account \"{{username}}\" linked",
"save_changes": "Save changes", "save_changes": "Save changes",
"changes_saved": "Changes successfully saved", "changes_saved": "Changes successfully saved",
"download_sources_description": "Hydra will fetch the download links from these sources. The source URL must be a direct link to a .json file containing the download links.", "download_sources_description": "Hydra will fetch the download links from these sources. The source URL must be a direct link to a .json file containing the download links.",
@ -281,7 +281,6 @@
"disable_nsfw_alert": "Disable NSFW alert", "disable_nsfw_alert": "Disable NSFW alert",
"seed_after_download_complete": "Seed after download complete", "seed_after_download_complete": "Seed after download complete",
"show_hidden_achievement_description": "Show hidden achievements description before unlocking them", "show_hidden_achievement_description": "Show hidden achievements description before unlocking them",
"debrid_services": "Debrid Services",
"account": "Account", "account": "Account",
"no_users_blocked": "You have no blocked users", "no_users_blocked": "You have no blocked users",
"subscription_active_until": "Your Hydra Cloud is active until {{date}}", "subscription_active_until": "Your Hydra Cloud is active until {{date}}",
@ -298,7 +297,8 @@
"subscription_renew_cancelled": "Automatic renewal is disabled", "subscription_renew_cancelled": "Automatic renewal is disabled",
"subscription_renews_on": "Your subscription renews on {{date}}", "subscription_renews_on": "Your subscription renews on {{date}}",
"bill_sent_until": "Your next bill will be sent until this day", "bill_sent_until": "Your next bill will be sent until this day",
"enable_torbox": "Enable Torbox" "enable_torbox": "Enable Torbox",
"torbox_description": "TorBox is your premium seedbox service rivaling even the best servers on the market."
}, },
"notifications": { "notifications": {
"download_complete": "Download complete", "download_complete": "Download complete",

View File

@ -236,13 +236,13 @@
"behavior": "Otros", "behavior": "Otros",
"download_sources": "Fuentes de descarga", "download_sources": "Fuentes de descarga",
"language": "Idioma", "language": "Idioma",
"real_debrid_api_token": "Token API", "api_token": "Token API",
"enable_real_debrid": "Activar Real-Debrid", "enable_real_debrid": "Activar Real-Debrid",
"real_debrid_description": "Real-Debrid es una forma de descargar sin restricciones archivos instantáneamente con la máxima velocidad de tu internet.", "real_debrid_description": "Real-Debrid es una forma de descargar sin restricciones archivos instantáneamente con la máxima velocidad de tu internet.",
"real_debrid_invalid_token": "Token de API inválido", "debrid_invalid_token": "Token de API inválido",
"real_debrid_api_token_hint": "Puedes obtener tu clave de API <0>aquí</0>", "debrid_api_token_hint": "Puedes obtener tu clave de API <0>aquí</0>",
"real_debrid_free_account_error": "La cuenta \"{{username}}\" es una cuenta gratuita. Por favor, suscríbete a Real-Debrid", "real_debrid_free_account_error": "La cuenta \"{{username}}\" es una cuenta gratuita. Por favor, suscríbete a Real-Debrid",
"real_debrid_linked_message": "Cuenta \"{{username}}\" vinculada", "debrid_linked_message": "Cuenta \"{{username}}\" vinculada",
"save_changes": "Guardar cambios", "save_changes": "Guardar cambios",
"changes_saved": "Ajustes guardados exitosamente", "changes_saved": "Ajustes guardados exitosamente",
"download_sources_description": "Hydra buscará los enlaces de descarga de estas fuentes. La URL de origen debe ser un enlace directo a un archivo .json que contenga los enlaces de descarga", "download_sources_description": "Hydra buscará los enlaces de descarga de estas fuentes. La URL de origen debe ser un enlace directo a un archivo .json que contenga los enlaces de descarga",

View File

@ -213,13 +213,13 @@
"behavior": "Käitumine", "behavior": "Käitumine",
"download_sources": "Allalaadimise allikad", "download_sources": "Allalaadimise allikad",
"language": "Keel", "language": "Keel",
"real_debrid_api_token": "API Võti", "api_token": "API Võti",
"enable_real_debrid": "Luba Real-Debrid", "enable_real_debrid": "Luba Real-Debrid",
"real_debrid_description": "Real-Debrid on piiranguteta allalaadija, mis võimaldab sul faile alla laadida koheselt ja sinu internetiühenduse parima kiirusega.", "real_debrid_description": "Real-Debrid on piiranguteta allalaadija, mis võimaldab sul faile alla laadida koheselt ja sinu internetiühenduse parima kiirusega.",
"real_debrid_invalid_token": "Vigane API võti", "debrid_invalid_token": "Vigane API võti",
"real_debrid_api_token_hint": "Sa saad oma API võtme <0>siit</0>", "debrid_api_token_hint": "Sa saad oma API võtme <0>siit</0>",
"real_debrid_free_account_error": "Konto \"{{username}}\" on tasuta konto. Palun telli Real-Debrid", "real_debrid_free_account_error": "Konto \"{{username}}\" on tasuta konto. Palun telli Real-Debrid",
"real_debrid_linked_message": "Konto \"{{username}}\" ühendatud", "debrid_linked_message": "Konto \"{{username}}\" ühendatud",
"save_changes": "Salvesta muudatused", "save_changes": "Salvesta muudatused",
"changes_saved": "Muudatused edukalt salvestatud", "changes_saved": "Muudatused edukalt salvestatud",
"download_sources_description": "Hydra laeb allalaadimise lingid nendest allikatest. Allika URL peab olema otsene link .json failile, mis sisaldab allalaadimise linke.", "download_sources_description": "Hydra laeb allalaadimise lingid nendest allikatest. Allika URL peab olema otsene link .json failile, mis sisaldab allalaadimise linke.",

View File

@ -110,7 +110,7 @@
"general": "کلی", "general": "کلی",
"behavior": "رفتار", "behavior": "رفتار",
"enable_real_debrid": "فعال‌سازی Real-Debrid", "enable_real_debrid": "فعال‌سازی Real-Debrid",
"real_debrid_api_token_hint": "کلید API خود را از <ب0>اینجا</0> بگیرید.", "debrid_api_token_hint": "کلید API خود را از <ب0>اینجا</0> بگیرید.",
"save_changes": "ذخیره تغییرات" "save_changes": "ذخیره تغییرات"
}, },
"notifications": { "notifications": {

View File

@ -161,13 +161,13 @@
"behavior": "Perilaku", "behavior": "Perilaku",
"download_sources": "Sumber unduhan", "download_sources": "Sumber unduhan",
"language": "Bahasa", "language": "Bahasa",
"real_debrid_api_token": "Token API", "api_token": "Token API",
"enable_real_debrid": "Aktifkan Real-Debrid", "enable_real_debrid": "Aktifkan Real-Debrid",
"real_debrid_description": "Real-Debrid adalah downloader tanpa batas yang memungkinkan kamu untuk mengunduh file dengan cepat dan pada kecepatan terbaik dari Internet kamu.", "real_debrid_description": "Real-Debrid adalah downloader tanpa batas yang memungkinkan kamu untuk mengunduh file dengan cepat dan pada kecepatan terbaik dari Internet kamu.",
"real_debrid_invalid_token": "Token API tidak valid", "debrid_invalid_token": "Token API tidak valid",
"real_debrid_api_token_hint": "Kamu bisa dapatkan token API di <0>sini</0>", "debrid_api_token_hint": "Kamu bisa dapatkan token API di <0>sini</0>",
"real_debrid_free_account_error": "Akun \"{{username}}\" adalah akun gratis. Silakan berlangganan Real-Debrid", "real_debrid_free_account_error": "Akun \"{{username}}\" adalah akun gratis. Silakan berlangganan Real-Debrid",
"real_debrid_linked_message": "Akun \"{{username}}\" terhubung", "debrid_linked_message": "Akun \"{{username}}\" terhubung",
"save_changes": "Simpan perubahan", "save_changes": "Simpan perubahan",
"changes_saved": "Perubahan disimpan berhasil", "changes_saved": "Perubahan disimpan berhasil",
"download_sources_description": "Hydra akan mencari link unduhan dari sini. URL harus menuju file .json dengan link unduhan.", "download_sources_description": "Hydra akan mencari link unduhan dari sini. URL harus menuju file .json dengan link unduhan.",

View File

@ -118,7 +118,7 @@
"general": "Generale", "general": "Generale",
"behavior": "Comportamento", "behavior": "Comportamento",
"enable_real_debrid": "Abilita Real Debrid", "enable_real_debrid": "Abilita Real Debrid",
"real_debrid_api_token_hint": "Puoi trovare la tua chiave API <0>here</0>", "debrid_api_token_hint": "Puoi trovare la tua chiave API <0>here</0>",
"save_changes": "Salva modifiche" "save_changes": "Salva modifiche"
}, },
"notifications": { "notifications": {

View File

@ -159,13 +159,13 @@
"behavior": "Мінез-құлық", "behavior": "Мінез-құлық",
"download_sources": "Жүктеу көздері", "download_sources": "Жүктеу көздері",
"language": "Тіл", "language": "Тіл",
"real_debrid_api_token": "API Кілті", "api_token": "API Кілті",
"enable_real_debrid": "Real-Debrid-ті қосу", "enable_real_debrid": "Real-Debrid-ті қосу",
"real_debrid_description": "Real-Debrid - бұл шектеусіз жүктеуші, ол интернетте орналастырылған файлдарды тез жүктеуге немесе жеке желі арқылы кез келген блоктарды айналып өтіп, оларды бірден плеерге беруге мүмкіндік береді.", "real_debrid_description": "Real-Debrid - бұл шектеусіз жүктеуші, ол интернетте орналастырылған файлдарды тез жүктеуге немесе жеке желі арқылы кез келген блоктарды айналып өтіп, оларды бірден плеерге беруге мүмкіндік береді.",
"real_debrid_invalid_token": "Қате API кілті", "debrid_invalid_token": "Қате API кілті",
"real_debrid_api_token_hint": "API кілтін <0>осы жерден</0> алуға болады", "debrid_api_token_hint": "API кілтін <0>осы жерден</0> алуға болады",
"real_debrid_free_account_error": "\"{{username}}\" аккаунты жазылымға ие емес. Real-Debrid жазылымын алыңыз", "real_debrid_free_account_error": "\"{{username}}\" аккаунты жазылымға ие емес. Real-Debrid жазылымын алыңыз",
"real_debrid_linked_message": "\"{{username}}\" аккаунты байланған", "debrid_linked_message": "\"{{username}}\" аккаунты байланған",
"save_changes": "Өзгерістерді сақтау", "save_changes": "Өзгерістерді сақтау",
"changes_saved": "Өзгерістер сәтті сақталды", "changes_saved": "Өзгерістер сәтті сақталды",
"download_sources_description": "Hydra осы көздерден жүктеу сілтемелерін алады. URL-да жүктеу сілтемелері бар .json файлына тікелей сілтеме болуы керек.", "download_sources_description": "Hydra осы көздерден жүктеу сілтемелерін алады. URL-да жүктеу сілтемелері бар .json файлына тікелей сілтеме болуы керек.",

View File

@ -110,7 +110,7 @@
"general": "일반", "general": "일반",
"behavior": "행동", "behavior": "행동",
"enable_real_debrid": "Real-Debrid 활성화", "enable_real_debrid": "Real-Debrid 활성화",
"real_debrid_api_token_hint": "API 키를 <0>이곳</0>에서 얻으세요.", "debrid_api_token_hint": "API 키를 <0>이곳</0>에서 얻으세요.",
"save_changes": "변경 사항 저장" "save_changes": "변경 사항 저장"
}, },
"notifications": { "notifications": {

View File

@ -177,13 +177,13 @@
"behavior": "Oppførsel", "behavior": "Oppførsel",
"download_sources": "Nedlastingskilder", "download_sources": "Nedlastingskilder",
"language": "Språk", "language": "Språk",
"real_debrid_api_token": "API nøkkel", "api_token": "API nøkkel",
"enable_real_debrid": "Slå på Real-Debrid", "enable_real_debrid": "Slå på Real-Debrid",
"real_debrid_description": "Real-Debrid er en ubegrenset nedlaster som gør det mulig for deg å laste ned filer med en gang og med den beste utnyttelsen av internethastigheten din.", "real_debrid_description": "Real-Debrid er en ubegrenset nedlaster som gør det mulig for deg å laste ned filer med en gang og med den beste utnyttelsen av internethastigheten din.",
"real_debrid_invalid_token": "Ugyldig API nøkkel", "debrid_invalid_token": "Ugyldig API nøkkel",
"real_debrid_api_token_hint": "Du kan få API nøkkelen din <0>her</0>", "debrid_api_token_hint": "Du kan få API nøkkelen din <0>her</0>",
"real_debrid_free_account_error": "Brukeren \"{{username}}\" er en gratis bruker. Vennligst abboner på Real-Debrid", "real_debrid_free_account_error": "Brukeren \"{{username}}\" er en gratis bruker. Vennligst abboner på Real-Debrid",
"real_debrid_linked_message": "Brukeren \"{{username}}\" er forbunnet", "debrid_linked_message": "Brukeren \"{{username}}\" er forbunnet",
"save_changes": "Lagre endringer", "save_changes": "Lagre endringer",
"changes_saved": "Lagring av endringer vellykket", "changes_saved": "Lagring av endringer vellykket",
"download_sources_description": "Hydra vil hente nedlastingslenker fra disse kildene. Kilde URLen skal være en direkte lenke til en .json fil som inneholder nedlastingslenkene.", "download_sources_description": "Hydra vil hente nedlastingslenker fra disse kildene. Kilde URLen skal være en direkte lenke til en .json fil som inneholder nedlastingslenkene.",

View File

@ -111,7 +111,7 @@
"general": "Algemeen", "general": "Algemeen",
"behavior": "Gedrag", "behavior": "Gedrag",
"enable_real_debrid": "Enable Real-Debrid", "enable_real_debrid": "Enable Real-Debrid",
"real_debrid_api_token_hint": "U kunt uw API-sleutel <0>hier</0> verkrijgen.", "debrid_api_token_hint": "U kunt uw API-sleutel <0>hier</0> verkrijgen.",
"save_changes": "Wijzigingen opslaan" "save_changes": "Wijzigingen opslaan"
}, },
"notifications": { "notifications": {

View File

@ -119,7 +119,7 @@
"behavior": "Zachowania", "behavior": "Zachowania",
"language": "Język", "language": "Język",
"enable_real_debrid": "Włącz Real-Debrid", "enable_real_debrid": "Włącz Real-Debrid",
"real_debrid_api_token_hint": "Możesz uzyskać swój klucz API <0>tutaj</0>", "debrid_api_token_hint": "Możesz uzyskać swój klucz API <0>tutaj</0>",
"save_changes": "Zapisz zmiany" "save_changes": "Zapisz zmiany"
}, },
"notifications": { "notifications": {

View File

@ -225,13 +225,13 @@
"behavior": "Comportamento", "behavior": "Comportamento",
"download_sources": "Fontes de download", "download_sources": "Fontes de download",
"language": "Idioma", "language": "Idioma",
"real_debrid_api_token": "Token de API", "api_token": "Token de API",
"enable_real_debrid": "Habilitar Real-Debrid", "enable_real_debrid": "Habilitar Real-Debrid",
"real_debrid_api_token_hint": "Você pode obter seu token de API <0>aqui</0>", "debrid_api_token_hint": "Você pode obter seu token de API <0>aqui</0>",
"real_debrid_description": "O Real-Debrid é um downloader sem restrições que permite baixar arquivos instantaneamente e com a melhor velocidade da sua Internet.", "real_debrid_description": "O Real-Debrid é um downloader sem restrições que permite baixar arquivos instantaneamente e com a melhor velocidade da sua Internet.",
"real_debrid_invalid_token": "Token de API inválido", "debrid_invalid_token": "Token de API inválido",
"real_debrid_free_account_error": "A conta \"{{username}}\" é uma conta gratuita. Por favor, assine a Real-Debrid", "real_debrid_free_account_error": "A conta \"{{username}}\" é uma conta gratuita. Por favor, assine a Real-Debrid",
"real_debrid_linked_message": "Conta \"{{username}}\" vinculada", "debrid_linked_message": "Conta \"{{username}}\" vinculada",
"save_changes": "Salvar mudanças", "save_changes": "Salvar mudanças",
"changes_saved": "Ajustes salvos com sucesso", "changes_saved": "Ajustes salvos com sucesso",
"download_sources_description": "Hydra vai buscar links de download em todas as fontes habilitadas. A URL da fonte deve ser um link direto para um arquivo .json contendo uma lista de links.", "download_sources_description": "Hydra vai buscar links de download em todas as fontes habilitadas. A URL da fonte deve ser um link direto para um arquivo .json contendo uma lista de links.",
@ -270,7 +270,6 @@
"disable_nsfw_alert": "Desativar alerta de conteúdo inapropriado", "disable_nsfw_alert": "Desativar alerta de conteúdo inapropriado",
"seed_after_download_complete": "Semear após a conclusão do download", "seed_after_download_complete": "Semear após a conclusão do download",
"show_hidden_achievement_description": "Mostrar descrição de conquistas ocultas antes de debloqueá-las", "show_hidden_achievement_description": "Mostrar descrição de conquistas ocultas antes de debloqueá-las",
"debrid_services": "Serviços Debrid",
"account": "Conta", "account": "Conta",
"no_users_blocked": "Você não bloqueou nenhum usuário", "no_users_blocked": "Você não bloqueou nenhum usuário",
"subscription_active_until": "Sua assinatura Hydra Cloud ficará ativa até {{date}}", "subscription_active_until": "Sua assinatura Hydra Cloud ficará ativa até {{date}}",
@ -287,7 +286,8 @@
"subscription_renew_cancelled": "A renovação automática está desativada", "subscription_renew_cancelled": "A renovação automática está desativada",
"subscription_renews_on": "Sua assinatura renova dia {{date}}", "subscription_renews_on": "Sua assinatura renova dia {{date}}",
"bill_sent_until": "Sua próxima cobrança será enviada até esse dia", "bill_sent_until": "Sua próxima cobrança será enviada até esse dia",
"enable_torbox": "Habilitar Torbox" "enable_torbox": "Habilitar Torbox",
"torbox_description": "TorBox é o seu serviço de seedbox premium que rivaliza até com os melhores servidores do mercado."
}, },
"notifications": { "notifications": {
"download_complete": "Download concluído", "download_complete": "Download concluído",

View File

@ -205,13 +205,13 @@
"behavior": "Comportamento", "behavior": "Comportamento",
"download_sources": "Fontes de transferência", "download_sources": "Fontes de transferência",
"language": "Idioma", "language": "Idioma",
"real_debrid_api_token": "Token de API", "api_token": "Token de API",
"enable_real_debrid": "Ativar Real-Debrid", "enable_real_debrid": "Ativar Real-Debrid",
"real_debrid_api_token_hint": "Podes obter o teu token de API <0>aqui</0>", "debrid_api_token_hint": "Podes obter o teu token de API <0>aqui</0>",
"real_debrid_description": "O Real-Debrid é um downloader sem restrições que permite descarregar ficheiros instantaneamente e com a melhor velocidade da tua Internet.", "real_debrid_description": "O Real-Debrid é um downloader sem restrições que permite descarregar ficheiros instantaneamente e com a melhor velocidade da tua Internet.",
"real_debrid_invalid_token": "Token de API inválido", "debrid_invalid_token": "Token de API inválido",
"real_debrid_free_account_error": "A conta \"{{username}}\" é uma conta gratuita. Por favor, subscreve o Real-Debrid", "real_debrid_free_account_error": "A conta \"{{username}}\" é uma conta gratuita. Por favor, subscreve o Real-Debrid",
"real_debrid_linked_message": "Conta \"{{username}}\" associada", "debrid_linked_message": "Conta \"{{username}}\" associada",
"save_changes": "Guardar alterações", "save_changes": "Guardar alterações",
"changes_saved": "Alterações guardadas com sucesso", "changes_saved": "Alterações guardadas com sucesso",
"download_sources_description": "O Hydra vai procurar links de download em todas as fontes ativadas. O URL da fonte deve ser um link direto para um ficheiro .json que contenha uma lista de links.", "download_sources_description": "O Hydra vai procurar links de download em todas as fontes ativadas. O URL da fonte deve ser um link direto para um ficheiro .json que contenha uma lista de links.",

View File

@ -124,13 +124,13 @@
"general": "General", "general": "General",
"behavior": "Comportament", "behavior": "Comportament",
"language": "Limbă", "language": "Limbă",
"real_debrid_api_token": "Token API", "api_token": "Token API",
"enable_real_debrid": "Activează Real-Debrid", "enable_real_debrid": "Activează Real-Debrid",
"real_debrid_description": "Real-Debrid este un descărcător fără restricții care îți permite să descarci fișiere instantaneu și la cea mai bună viteză a internetului tău.", "real_debrid_description": "Real-Debrid este un descărcător fără restricții care îți permite să descarci fișiere instantaneu și la cea mai bună viteză a internetului tău.",
"real_debrid_invalid_token": "Token API invalid", "debrid_invalid_token": "Token API invalid",
"real_debrid_api_token_hint": "Poți obține token-ul tău API <0>aici</0>", "debrid_api_token_hint": "Poți obține token-ul tău API <0>aici</0>",
"real_debrid_free_account_error": "Contul \"{{username}}\" este un cont gratuit. Te rugăm să te abonezi la Real-Debrid", "real_debrid_free_account_error": "Contul \"{{username}}\" este un cont gratuit. Te rugăm să te abonezi la Real-Debrid",
"real_debrid_linked_message": "Contul \"{{username}}\" a fost legat", "debrid_linked_message": "Contul \"{{username}}\" a fost legat",
"save_changes": "Salvează modificările", "save_changes": "Salvează modificările",
"changes_saved": "Modificările au fost salvate cu succes" "changes_saved": "Modificările au fost salvate cu succes"
}, },

View File

@ -237,13 +237,13 @@
"behavior": "Поведение", "behavior": "Поведение",
"download_sources": "Источники загрузки", "download_sources": "Источники загрузки",
"language": "Язык", "language": "Язык",
"real_debrid_api_token": "API Ключ", "api_token": "API Ключ",
"enable_real_debrid": "Включить Real-Debrid", "enable_real_debrid": "Включить Real-Debrid",
"real_debrid_description": "Real-Debrid - это неограниченный загрузчик, который позволяет быстро скачивать файлы, размещенные в Интернете, или мгновенно передавать их в плеер через частную сеть, позволяющую обходить любые блокировки.", "real_debrid_description": "Real-Debrid - это неограниченный загрузчик, который позволяет быстро скачивать файлы, размещенные в Интернете, или мгновенно передавать их в плеер через частную сеть, позволяющую обходить любые блокировки.",
"real_debrid_invalid_token": "Неверный API ключ", "debrid_invalid_token": "Неверный API ключ",
"real_debrid_api_token_hint": "API ключ можно получить <0>здесь</0>", "debrid_api_token_hint": "API ключ можно получить <0>здесь</0>",
"real_debrid_free_account_error": "Аккаунт \"{{username}}\" - не имеет подписки. Пожалуйста, оформите подписку на Real-Debrid", "real_debrid_free_account_error": "Аккаунт \"{{username}}\" - не имеет подписки. Пожалуйста, оформите подписку на Real-Debrid",
"real_debrid_linked_message": "Привязан аккаунт \"{{username}}\"", "debrid_linked_message": "Привязан аккаунт \"{{username}}\"",
"save_changes": "Сохранить изменения", "save_changes": "Сохранить изменения",
"changes_saved": "Изменения успешно сохранены", "changes_saved": "Изменения успешно сохранены",
"download_sources_description": "Hydra будет получать ссылки на загрузки из этих источников. URL должна содержать прямую ссылку на .json-файл с ссылками для загрузок.", "download_sources_description": "Hydra будет получать ссылки на загрузки из этих источников. URL должна содержать прямую ссылку на .json-файл с ссылками для загрузок.",

View File

@ -236,13 +236,13 @@
"behavior": "Davranış", "behavior": "Davranış",
"download_sources": "İndirme kaynakları", "download_sources": "İndirme kaynakları",
"language": "Dil", "language": "Dil",
"real_debrid_api_token": "API Anahtarı", "api_token": "API Anahtarı",
"enable_real_debrid": "Real-Debrid'i Etkinleştir", "enable_real_debrid": "Real-Debrid'i Etkinleştir",
"real_debrid_description": "Real-Debrid, yalnızca internet hızınızla sınırlı olarak hızlı dosya indirmenizi sağlayan sınırsız bir indirici.", "real_debrid_description": "Real-Debrid, yalnızca internet hızınızla sınırlı olarak hızlı dosya indirmenizi sağlayan sınırsız bir indirici.",
"real_debrid_invalid_token": "Geçersiz API anahtarı", "debrid_invalid_token": "Geçersiz API anahtarı",
"real_debrid_api_token_hint": "API anahtarınızı <0>buradan</0> alabilirsiniz", "debrid_api_token_hint": "API anahtarınızı <0>buradan</0> alabilirsiniz",
"real_debrid_free_account_error": "\"{{username}}\" hesabı ücretsiz bir hesaptır. Lütfen Real-Debrid abonesi olun", "real_debrid_free_account_error": "\"{{username}}\" hesabı ücretsiz bir hesaptır. Lütfen Real-Debrid abonesi olun",
"real_debrid_linked_message": "\"{{username}}\" hesabı bağlandı", "debrid_linked_message": "\"{{username}}\" hesabı bağlandı",
"save_changes": "Değişiklikleri Kaydet", "save_changes": "Değişiklikleri Kaydet",
"changes_saved": "Değişiklikler başarıyla kaydedildi", "changes_saved": "Değişiklikler başarıyla kaydedildi",
"download_sources_description": "Hydra, indirme bağlantılarını bu kaynaklardan alacak. Kaynak URL, indirme bağlantılarını içeren bir .json dosyasına doğrudan bir bağlantı olmalıdır.", "download_sources_description": "Hydra, indirme bağlantılarını bu kaynaklardan alacak. Kaynak URL, indirme bağlantılarını içeren bir .json dosyasına doğrudan bir bağlantı olmalıdır.",

View File

@ -174,13 +174,13 @@
"import": "Імпортувати", "import": "Імпортувати",
"insert_valid_json_url": "Вставте дійсний URL JSON-файлу", "insert_valid_json_url": "Вставте дійсний URL JSON-файлу",
"language": "Мова", "language": "Мова",
"real_debrid_api_token": "API-токен", "api_token": "API-токен",
"real_debrid_api_token_hint": "API токен можливо отримати <0>тут</0>", "debrid_api_token_hint": "API токен можливо отримати <0>тут</0>",
"real_debrid_api_token_label": "Real-Debrid API-токен", "real_debrid_api_token_label": "Real-Debrid API-токен",
"real_debrid_description": "Real-Debrid — це необмежений завантажувач, який дозволяє швидко завантажувати файли, розміщені в Інтернеті, або миттєво передавати їх у плеєр через приватну мережу, що дозволяє обходити будь-які блокування.", "real_debrid_description": "Real-Debrid — це необмежений завантажувач, який дозволяє швидко завантажувати файли, розміщені в Інтернеті, або миттєво передавати їх у плеєр через приватну мережу, що дозволяє обходити будь-які блокування.",
"real_debrid_free_account_error": "Акаунт \"{{username}}\" - не має наявної підписки. Будь ласка, оформіть підписку на Real-Debrid", "real_debrid_free_account_error": "Акаунт \"{{username}}\" - не має наявної підписки. Будь ласка, оформіть підписку на Real-Debrid",
"real_debrid_invalid_token": "Невірний API-токен", "debrid_invalid_token": "Невірний API-токен",
"real_debrid_linked_message": "Акаунт \"{{username}}\" привязаний", "debrid_linked_message": "Акаунт \"{{username}}\" привязаний",
"remove_download_source": "Видалити", "remove_download_source": "Видалити",
"removed_download_source": "Джерело завантажень було видалено", "removed_download_source": "Джерело завантажень було видалено",
"save_changes": "Зберегти зміни", "save_changes": "Зберегти зміни",

View File

@ -213,13 +213,13 @@
"behavior": "行为", "behavior": "行为",
"download_sources": "下载源", "download_sources": "下载源",
"language": "语言", "language": "语言",
"real_debrid_api_token": "API 令牌", "api_token": "API 令牌",
"enable_real_debrid": "启用 Real-Debrid", "enable_real_debrid": "启用 Real-Debrid",
"real_debrid_description": "Real-Debrid 是一个无限制的下载器,允许您以最快的互联网速度即时下载文件。", "real_debrid_description": "Real-Debrid 是一个无限制的下载器,允许您以最快的互联网速度即时下载文件。",
"real_debrid_invalid_token": "无效的 API 令牌", "debrid_invalid_token": "无效的 API 令牌",
"real_debrid_api_token_hint": "您可以从<0>这里</0>获取API密钥.", "debrid_api_token_hint": "您可以从<0>这里</0>获取API密钥.",
"real_debrid_free_account_error": "账户 \"{{username}}\" 是免费账户。请订阅 Real-Debrid", "real_debrid_free_account_error": "账户 \"{{username}}\" 是免费账户。请订阅 Real-Debrid",
"real_debrid_linked_message": "账户 \"{{username}}\" 已链接", "debrid_linked_message": "账户 \"{{username}}\" 已链接",
"save_changes": "保存更改", "save_changes": "保存更改",
"changes_saved": "更改已成功保存", "changes_saved": "更改已成功保存",
"download_sources_description": "Hydra 将从这些源获取下载链接。源 URL 必须是直接链接到包含下载链接的 .json 文件。", "download_sources_description": "Hydra 将从这些源获取下载链接。源 URL 必须是直接链接到包含下载链接的 .json 文件。",

View File

@ -46,6 +46,7 @@ import "./user-preferences/auto-launch";
import "./autoupdater/check-for-updates"; import "./autoupdater/check-for-updates";
import "./autoupdater/restart-and-install-update"; import "./autoupdater/restart-and-install-update";
import "./user-preferences/authenticate-real-debrid"; import "./user-preferences/authenticate-real-debrid";
import "./user-preferences/authenticate-torbox";
import "./download-sources/put-download-source"; import "./download-sources/put-download-source";
import "./auth/sign-out"; import "./auth/sign-out";
import "./auth/open-auth-window"; import "./auth/open-auth-window";

View File

@ -0,0 +1,14 @@
import { registerEvent } from "../register-event";
import { TorBoxClient } from "@main/services/download/torbox";
const authenticateTorBox = async (
_event: Electron.IpcMainInvokeEvent,
apiToken: string
) => {
TorBoxClient.authorize(apiToken);
const user = await TorBoxClient.getUser();
return user;
};
registerEvent("authenticateTorBox", authenticateTorBox);

View File

@ -92,6 +92,8 @@ contextBridge.exposeInMainWorld("electron", {
ipcRenderer.invoke("autoLaunch", autoLaunchProps), ipcRenderer.invoke("autoLaunch", autoLaunchProps),
authenticateRealDebrid: (apiToken: string) => authenticateRealDebrid: (apiToken: string) =>
ipcRenderer.invoke("authenticateRealDebrid", apiToken), ipcRenderer.invoke("authenticateRealDebrid", apiToken),
authenticateTorBox: (apiToken: string) =>
ipcRenderer.invoke("authenticateTorBox", apiToken),
/* Download sources */ /* Download sources */
putDownloadSource: (objectIds: string[]) => putDownloadSource: (objectIds: string[]) =>

View File

@ -28,6 +28,7 @@ import type {
CatalogueSearchPayload, CatalogueSearchPayload,
LibraryGame, LibraryGame,
GameRunning, GameRunning,
TorBoxUser,
} from "@types"; } from "@types";
import type { AxiosProgressEvent } from "axios"; import type { AxiosProgressEvent } from "axios";
import type disk from "diskusage"; import type disk from "diskusage";
@ -142,6 +143,7 @@ declare global {
minimized: boolean; minimized: boolean;
}) => Promise<void>; }) => Promise<void>;
authenticateRealDebrid: (apiToken: string) => Promise<RealDebridUser>; authenticateRealDebrid: (apiToken: string) => Promise<RealDebridUser>;
authenticateTorBox: (apiToken: string) => Promise<TorBoxUser>;
onAchievementUnlocked: (cb: () => void) => () => Electron.IpcRenderer; onAchievementUnlocked: (cb: () => void) => () => Electron.IpcRenderer;
/* Download sources */ /* Download sources */

View File

@ -2,7 +2,7 @@ import { useContext, useEffect, useState } from "react";
import { Trans, useTranslation } from "react-i18next"; import { Trans, useTranslation } from "react-i18next";
import { Button, CheckboxField, Link, TextField } from "@renderer/components"; import { Button, CheckboxField, Link, TextField } from "@renderer/components";
import * as styles from "./settings-debrid.css"; import * as styles from "./settings-real-debrid.css";
import { useAppSelector, useToast } from "@renderer/hooks"; import { useAppSelector, useToast } from "@renderer/hooks";
@ -10,9 +10,8 @@ import { SPACING_UNIT } from "@renderer/theme.css";
import { settingsContext } from "@renderer/context"; import { settingsContext } from "@renderer/context";
const REAL_DEBRID_API_TOKEN_URL = "https://real-debrid.com/apitoken"; const REAL_DEBRID_API_TOKEN_URL = "https://real-debrid.com/apitoken";
const TORBOX_API_TOKEN_URL = "https://torbox.app/settings";
export function SettingsDebrid() { export function SettingsRealDebrid() {
const userPreferences = useAppSelector( const userPreferences = useAppSelector(
(state) => state.userPreferences.value (state) => state.userPreferences.value
); );
@ -23,8 +22,6 @@ export function SettingsDebrid() {
const [form, setForm] = useState({ const [form, setForm] = useState({
useRealDebrid: false, useRealDebrid: false,
realDebridApiToken: null as string | null, realDebridApiToken: null as string | null,
useTorBox: false,
torBoxApiToken: null as string | null,
}); });
const { showSuccessToast, showErrorToast } = useToast(); const { showSuccessToast, showErrorToast } = useToast();
@ -36,8 +33,6 @@ export function SettingsDebrid() {
setForm({ setForm({
useRealDebrid: Boolean(userPreferences.realDebridApiToken), useRealDebrid: Boolean(userPreferences.realDebridApiToken),
realDebridApiToken: userPreferences.realDebridApiToken ?? null, realDebridApiToken: userPreferences.realDebridApiToken ?? null,
useTorBox: Boolean(userPreferences.torBoxApiToken),
torBoxApiToken: userPreferences.torBoxApiToken ?? null,
}); });
} }
}, [userPreferences]); }, [userPreferences]);
@ -62,7 +57,7 @@ export function SettingsDebrid() {
return; return;
} else { } else {
showSuccessToast( showSuccessToast(
t("real_debrid_linked_message", { username: user.username }) t("debrid_linked_message", { username: user.username })
); );
} }
} else { } else {
@ -71,10 +66,9 @@ 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("debrid_invalid_token"));
} finally { } finally {
setIsLoading(false); setIsLoading(false);
} }
@ -100,14 +94,18 @@ export function SettingsDebrid() {
{form.useRealDebrid && ( {form.useRealDebrid && (
<TextField <TextField
label={t("real_debrid_api_token")} label={t("api_token")}
value={form.realDebridApiToken ?? ""} value={form.realDebridApiToken ?? ""}
type="password" type="password"
onChange={(event) => onChange={(event) =>
setForm({ ...form, realDebridApiToken: event.target.value }) setForm({ ...form, realDebridApiToken: event.target.value })
} }
placeholder="API Token" placeholder="API Token"
containerProps={{ style: { marginTop: `${SPACING_UNIT}px` } }} containerProps={{
style: {
marginTop: `${SPACING_UNIT}px`,
},
}}
rightContent={ rightContent={
<Button <Button
type="submit" type="submit"
@ -120,52 +118,12 @@ export function SettingsDebrid() {
</Button> </Button>
} }
hint={ hint={
<Trans i18nKey="real_debrid_api_token_hint" ns="settings"> <Trans i18nKey="debrid_api_token_hint" ns="settings">
<Link to={REAL_DEBRID_API_TOKEN_URL} /> <Link to={REAL_DEBRID_API_TOKEN_URL} />
</Trans> </Trans>
} }
/> />
)} )}
<CheckboxField
label={t("enable_torbox")}
checked={form.useTorBox}
onChange={() =>
setForm((prev) => ({
...prev,
useTorBox: !form.useTorBox,
}))
}
/>
{form.useTorBox && (
<TextField
label={t("real_debrid_api_token")}
value={form.torBoxApiToken ?? ""}
type="password"
onChange={(event) =>
setForm({ ...form, torBoxApiToken: event.target.value })
}
placeholder="API Token"
containerProps={{ style: { marginTop: `${SPACING_UNIT}px` } }}
rightContent={
<Button
type="submit"
style={{
alignSelf: "flex-end",
}}
disabled={isButtonDisabled}
>
{t("save")}
</Button>
}
hint={
<Trans i18nKey="real_debrid_api_token_hint" ns="settings">
<Link to={TORBOX_API_TOKEN_URL} />
</Trans>
}
/>
)}
</form> </form>
); );
} }

View File

@ -0,0 +1,13 @@
import { style } from "@vanilla-extract/css";
import { SPACING_UNIT } from "../../theme.css";
export const form = style({
display: "flex",
flexDirection: "column",
gap: `${SPACING_UNIT}px`,
});
export const description = style({
marginBottom: `${SPACING_UNIT * 2}px`,
});

View File

@ -0,0 +1,119 @@
import { useContext, useEffect, useState } from "react";
import { Trans, useTranslation } from "react-i18next";
import { Button, CheckboxField, Link, TextField } from "@renderer/components";
import * as styles from "./settings-torbox.css";
import { useAppSelector, useToast } from "@renderer/hooks";
import { SPACING_UNIT } from "@renderer/theme.css";
import { settingsContext } from "@renderer/context";
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<HTMLFormElement> = async (
event
) => {
setIsLoading(true);
event.preventDefault();
try {
if (form.useTorBox) {
const user = await window.electron.authenticateTorBox(
form.torBoxApiToken!
);
showSuccessToast(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;
return (
<form className={styles.form} onSubmit={handleFormSubmit}>
<p className={styles.description}>{t("torbox_description")}</p>
<CheckboxField
label={t("enable_torbox")}
checked={form.useTorBox}
onChange={() =>
setForm((prev) => ({
...prev,
useTorBox: !form.useTorBox,
}))
}
/>
{form.useTorBox && (
<TextField
label={t("api_token")}
value={form.torBoxApiToken ?? ""}
type="password"
onChange={(event) =>
setForm({ ...form, torBoxApiToken: event.target.value })
}
placeholder="API Token"
containerProps={{
style: {
marginTop: `${SPACING_UNIT}px`,
},
}}
rightContent={
<Button
type="submit"
style={{
alignSelf: "flex-end",
}}
disabled={isButtonDisabled}
>
{t("save")}
</Button>
}
hint={
<Trans i18nKey="debrid_api_token_hint" ns="settings">
<Link to={TORBOX_API_TOKEN_URL} />
</Trans>
}
/>
)}
</form>
);
}

View File

@ -2,7 +2,7 @@ import { Button } from "@renderer/components";
import * as styles from "./settings.css"; import * as styles from "./settings.css";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { SettingsDebrid } from "./settings-debrid"; import { SettingsRealDebrid } from "./settings-real-debrid";
import { SettingsGeneral } from "./settings-general"; import { SettingsGeneral } from "./settings-general";
import { SettingsBehavior } from "./settings-behavior"; import { SettingsBehavior } from "./settings-behavior";
@ -14,6 +14,7 @@ import {
import { SettingsAccount } from "./settings-account"; import { SettingsAccount } from "./settings-account";
import { useUserDetails } from "@renderer/hooks"; import { useUserDetails } from "@renderer/hooks";
import { useMemo } from "react"; import { useMemo } from "react";
import { SettingsTorbox } from "./settings-torbox";
export default function Settings() { export default function Settings() {
const { t } = useTranslation("settings"); const { t } = useTranslation("settings");
@ -25,7 +26,8 @@ export default function Settings() {
t("general"), t("general"),
t("behavior"), t("behavior"),
t("download_sources"), t("download_sources"),
t("debrid_services"), "Torbox",
"Real-Debrid",
]; ];
if (userDetails) return [...categories, t("account")]; if (userDetails) return [...categories, t("account")];
@ -50,7 +52,11 @@ export default function Settings() {
} }
if (currentCategoryIndex === 3) { if (currentCategoryIndex === 3) {
return <SettingsDebrid />; return <SettingsTorbox />;
}
if (currentCategoryIndex === 4) {
return <SettingsRealDebrid />;
} }
return <SettingsAccount />; return <SettingsAccount />;