From b286e8650627f2619ee391ec5df1d3697a3df272 Mon Sep 17 00:00:00 2001 From: anton3x Date: Mon, 23 Mar 2026 23:40:10 +0000 Subject: [PATCH 1/3] feature: Share game link to a friend --- src/locales/ar/translation.json | 5 +- src/locales/be/translation.json | 5 +- src/locales/bg/translation.json | 5 +- src/locales/ca/translation.json | 5 +- src/locales/cs/translation.json | 5 +- src/locales/da/translation.json | 5 +- src/locales/de/translation.json | 5 +- src/locales/en/translation.json | 3 + src/locales/es/translation.json | 5 +- src/locales/et/translation.json | 5 +- src/locales/fa/translation.json | 5 +- src/locales/fi/translation.json | 5 +- src/locales/fr/translation.json | 5 +- src/locales/hu/translation.json | 5 +- src/locales/id/translation.json | 5 +- src/locales/it/translation.json | 5 +- src/locales/kk/translation.json | 5 +- src/locales/ko/translation.json | 5 +- src/locales/lv/translation.json | 5 +- src/locales/nb/translation.json | 5 +- src/locales/nl/translation.json | 5 +- src/locales/pl/translation.json | 5 +- src/locales/pt-BR/translation.json | 3 + src/locales/pt-PT/translation.json | 3 + src/locales/ro/translation.json | 5 +- src/locales/ru/translation.json | 5 +- src/locales/sl/translation.json | 5 +- src/locales/sv/translation.json | 5 +- src/locales/tr/translation.json | 5 +- src/locales/uk/translation.json | 5 +- src/locales/uz/translation.json | 5 +- src/locales/zh/translation.json | 5 +- src/main/index.ts | 25 ++++++++ .../game-details/game-details.context.tsx | 10 +++ .../game-details.context.types.ts | 2 + .../game-details/game-details-content.tsx | 9 +++ .../src/pages/game-details/game-details.tsx | 4 ++ .../game-details/hero/hero-panel-actions.tsx | 64 ++++++++++++++++--- .../game-details/modals/repacks-modal.scss | 19 ++++++ .../game-details/modals/repacks-modal.tsx | 44 ++++++++++++- 40 files changed, 292 insertions(+), 39 deletions(-) diff --git a/src/locales/ar/translation.json b/src/locales/ar/translation.json index 8cbdd5ffd..95cadd8a2 100644 --- a/src/locales/ar/translation.json +++ b/src/locales/ar/translation.json @@ -244,6 +244,7 @@ "download_in_progress": "جاري التنزيل", "download_paused": "التنزيل معلق", "last_downloaded_option": "خيار التنزيل الأخير", + "friend_shared_download_option": "تمت مشاركتها بواسطة صديق", "create_shortcut_success": "تم إنشاء الاختصار بنجاح", "create_shortcut_error": "خطأ في إنشاء الاختصار", "nsfw_content_title": "هذه اللعبة تحتوي على محتوى غير لائق", @@ -308,6 +309,7 @@ "download_error_not_cached_on_real_debrid": "هذا التنزيل غير متوفر على Real-Debrid وجلب حالة التنزيل من Real-Debrid غير متاح حاليًا.", "download_error_not_cached_on_torbox": "هذا التنزيل غير متوفر على TorBox وجلب حالة التنزيل من TorBox غير متاح حاليًا.", "game_removed_from_favorites": "تمت إزالة اللعبة من المفضلة", + "game_shared_to_clipboard": "تم نسخ رابط اللعبة إلى الحافظة", "game_added_to_favorites": "تمت إضافة اللعبة إلى المفضلة", "protondb_tier": "Tier", "protondb_tier_borked": "Borked", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "يتطلب خيار التنزيل المشترك هذا مصدراً لا تملكه بعد." }, "activation": { "title": "تفعيل Hydra", diff --git a/src/locales/be/translation.json b/src/locales/be/translation.json index cbe8db1df..1ef7ac455 100644 --- a/src/locales/be/translation.json +++ b/src/locales/be/translation.json @@ -277,6 +277,7 @@ "download_paused": "Download paused", "extracting": "Extracting", "last_downloaded_option": "Last downloaded option", + "friend_shared_download_option": "Падзяліўся сябар", "new_download_option": "New", "create_steam_shortcut": "Create Steam shortcut", "create_shortcut_success": "Shortcut created successfully", @@ -451,6 +452,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "Спасылка на гульню скапіявана ў буфер абмену", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -508,7 +510,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Гэтаму варыянту загрузкі, якім падзяліліся, патрэбна крыніца, якой у цябе яшчэ няма." }, "activation": { "title": "Актываваць Hydra", diff --git a/src/locales/bg/translation.json b/src/locales/bg/translation.json index 16c00d800..7184d5260 100644 --- a/src/locales/bg/translation.json +++ b/src/locales/bg/translation.json @@ -244,6 +244,7 @@ "download_in_progress": "Изтеглянето е в ход", "download_paused": "Изтеглянето е на пауза", "last_downloaded_option": "Последно изтеглена опция", + "friend_shared_download_option": "Споделено от приятел", "create_steam_shortcut": "Създай пряк път за Steam", "create_shortcut_success": "Прекият път е създаден успешно", "you_might_need_to_restart_steam": "Може да е необходимо да рестартирате Steam, за да видите промените", @@ -313,6 +314,7 @@ "download_error_not_cached_on_torbox": "Това изтегляне не е налично в TorBox и не може да се следи статуса.", "download_error_not_cached_on_hydra": "Това изтегляне не е налично в Nimbus.", "game_removed_from_favorites": "Играта е премахната от любими", + "game_shared_to_clipboard": "Връзката към играта е копирана в клипборда", "game_added_to_favorites": "Играта е добавена в любими", "automatically_extract_downloaded_files": "Автоматично извличане на изтеглени файлове", "create_start_menu_shortcut": "Създай пряк път в старт менюто", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Тази споделена опция за изтегляне изисква източник, който все още нямате." }, "activation": { "title": "Активирай Hydra", diff --git a/src/locales/ca/translation.json b/src/locales/ca/translation.json index 8ed8f6632..7d75df897 100644 --- a/src/locales/ca/translation.json +++ b/src/locales/ca/translation.json @@ -243,6 +243,7 @@ "download_in_progress": "Descàrrega en progrés", "download_paused": "Descàrrega en pausa", "last_downloaded_option": "Opció de l'última descàrrega", + "friend_shared_download_option": "Compartida per un amic", "create_shortcut_success": "Accés directe creat satisfactòriament", "create_shortcut_error": "Error al crear l'accés directe", "protondb_tier": "Tier", @@ -454,6 +455,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "Enllaç del joc copiat al porta-retalls", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Aquesta opció compartida necessita una font que encara no tens." }, "activation": { "title": "Activa l'Hydra", diff --git a/src/locales/cs/translation.json b/src/locales/cs/translation.json index d50b4c6f7..3fdab1fc2 100644 --- a/src/locales/cs/translation.json +++ b/src/locales/cs/translation.json @@ -244,6 +244,7 @@ "download_in_progress": "Probíhá stahování", "download_paused": "Stahování pozastaveno", "last_downloaded_option": "Poslední stažená možnost", + "friend_shared_download_option": "Sdíleno přítelem", "create_shortcut_success": "Zástupce vytvořen úspěšně", "create_shortcut_error": "Chyba při pokusu vytvořit zástupce", "nsfw_content_title": "Tahle hra obsahuje nevhodný obsah", @@ -310,6 +311,7 @@ "download_error_not_cached_on_real_debrid": "Toto stahování není dostupné na Real-Debrid a získávání informací o stahování z Real-Debrid není zatím dostupné.", "download_error_not_cached_on_torbox": "Toto stahování není dostupné na TorBox a získávání informací o stahování z TorBox není zatím dostupné.", "game_removed_from_favorites": "Hra odebrána z oblíbených", + "game_shared_to_clipboard": "Odkaz na hru zkopírován do schránky", "game_added_to_favorites": "Hra přidána do oblíbených", "automatically_extract_downloaded_files": "Automaticky rozbalit stažené soubory", "protondb_tier": "Tier", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Tato sdílená možnost stahování vyžaduje zdroj, který ještě nemáte." }, "activation": { "title": "Aktivovat hydru", diff --git a/src/locales/da/translation.json b/src/locales/da/translation.json index 69c502f96..be43be989 100644 --- a/src/locales/da/translation.json +++ b/src/locales/da/translation.json @@ -243,6 +243,7 @@ "download_in_progress": "Download undervejs", "download_paused": "Download sat på pause", "last_downloaded_option": "Sidste download mulighed", + "friend_shared_download_option": "Delt af en ven", "create_shortcut_success": "Genvej lavet successfuldt", "create_shortcut_error": "Fejl under skabelsen af genvej", "nsfw_content_title": "Dette spil indeholder upassende indhold", @@ -454,6 +455,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "Spillink kopieret til udklipsholderen", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Denne delte downloadmulighed kræver en kilde, du endnu ikke har." }, "activation": { "title": "Aktivér Hydra", diff --git a/src/locales/de/translation.json b/src/locales/de/translation.json index 1ce0a1143..150d91651 100644 --- a/src/locales/de/translation.json +++ b/src/locales/de/translation.json @@ -244,6 +244,7 @@ "download_in_progress": "Download erfolgt", "download_paused": "Download ist pausiert", "last_downloaded_option": "Letzte Download-Option", + "friend_shared_download_option": "Von einem Freund geteilt", "create_steam_shortcut": "Steam-Verknüpfung erstellen", "create_shortcut_success": "Verknüpfung erfolgreich erstellt", "you_might_need_to_restart_steam": "Möglicherweise musst du Steam neu starten, um die Änderungen zu sehen", @@ -313,6 +314,7 @@ "download_error_not_cached_on_torbox": "Dieser Download ist nicht auf TorBox verfügbar und das Abrufen des Download-Status von TorBox ist noch nicht verfügbar.", "download_error_not_cached_on_hydra": "Dieser Download ist nicht auf Nimbus verfügbar.", "game_removed_from_favorites": "Spiel aus Favoriten entfernt", + "game_shared_to_clipboard": "Spiel-Link in die Zwischenablage kopiert", "game_added_to_favorites": "Spiel zu Favoriten hinzugefügt", "automatically_extract_downloaded_files": "Heruntergeladene Dateien automatisch entpacken", "create_start_menu_shortcut": "Startmenü-Verknüpfung erstellen", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Diese geteilte Download-Option benötigt eine Quelle, die du noch nicht hast." }, "activation": { "title": "Hydra aktivieren", diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index e3b5f8356..dfca49215 100755 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -294,6 +294,8 @@ "download_paused": "Download paused", "extracting": "Extracting", "last_downloaded_option": "Last downloaded option", + "friend_shared_download_option": "Shared by friend", + "shared_download_source_missing": "This shared download option needs a source you do not have yet.", "new_download_option": "New", "create_steam_shortcut": "Create Steam shortcut", "create_shortcut_success": "Shortcut created successfully", @@ -474,6 +476,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "Game link copied to clipboard", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", diff --git a/src/locales/es/translation.json b/src/locales/es/translation.json index ed3112d1f..5e4ce12fc 100644 --- a/src/locales/es/translation.json +++ b/src/locales/es/translation.json @@ -260,6 +260,7 @@ "download_paused": "Descarga pausada", "extracting": "Extrayendo", "last_downloaded_option": "Última opción de descarga", + "friend_shared_download_option": "Compartida por un amigo", "new_download_option": "Nuevo", "create_steam_shortcut": "Crear atajo de Steam", "create_shortcut_success": "Atajo creado con éxito", @@ -349,6 +350,7 @@ "download_error_not_cached_on_torbox": "Esta descarga no está disponible en TorBox y no está disponible el estado de descarga de sondeo todavía.", "download_error_not_cached_on_hydra": "Esta descarga no está disponible en Nimbus.", "game_removed_from_favorites": "Juego eliminado de favoritos", + "game_shared_to_clipboard": "Enlace del juego copiado al portapapeles", "game_added_to_favorites": "Juego añadido a favoritos", "game_removed_from_pinned": "Juego removido de fijados", "game_added_to_pinned": "Juego añadido a fijados", @@ -470,7 +472,8 @@ "source_offline": "Source is offline", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Esta opción de descarga compartida necesita una fuente que todavía no tienes." }, "activation": { "title": "Activar Hydra", diff --git a/src/locales/et/translation.json b/src/locales/et/translation.json index e5ff104a8..e93898056 100644 --- a/src/locales/et/translation.json +++ b/src/locales/et/translation.json @@ -243,6 +243,7 @@ "download_in_progress": "Allalaadimine käimas", "download_paused": "Allalaadimine peatatud", "last_downloaded_option": "Viimane allalaaditud variant", + "friend_shared_download_option": "Sõbra jagatud", "create_shortcut_success": "Otsetee edukalt loodud", "create_shortcut_error": "Viga otsetee loomisel", "nsfw_content_title": "See mäng sisaldab sobimatut sisu", @@ -454,6 +455,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "Mängu link kopeeriti lõikepuhvrisse", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "See jagatud allalaadimisvalik vajab allikat, mida sul veel ei ole." }, "activation": { "title": "Aktiveeri Hydra", diff --git a/src/locales/fa/translation.json b/src/locales/fa/translation.json index a36c75405..e2e19af78 100644 --- a/src/locales/fa/translation.json +++ b/src/locales/fa/translation.json @@ -277,6 +277,7 @@ "download_paused": "Download paused", "extracting": "Extracting", "last_downloaded_option": "Last downloaded option", + "friend_shared_download_option": "اشتراک گذاری شده توسط دوست", "new_download_option": "New", "create_steam_shortcut": "Create Steam shortcut", "create_shortcut_success": "Shortcut created successfully", @@ -451,6 +452,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "لینک بازی در کلیپ بورد کپی شد", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -508,7 +510,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "این گزینه دانلود اشتراکی به منبعی نیاز دارد که هنوز ندارید." }, "activation": { "title": "فعال کردن هایدرا", diff --git a/src/locales/fi/translation.json b/src/locales/fi/translation.json index 2663921a2..45de4edde 100644 --- a/src/locales/fi/translation.json +++ b/src/locales/fi/translation.json @@ -247,6 +247,7 @@ "download_in_progress": "Lataus käynnissä", "download_paused": "Lataus keskeytetty", "last_downloaded_option": "Viimeisin latausvaihtoehto", + "friend_shared_download_option": "Ystävän jakama", "create_steam_shortcut": "Luo Steam-pikakuvake", "create_shortcut_success": "Pikakuvake luotu", "you_might_need_to_restart_steam": "Saattaa olla, että sinun on käynnistettävä Steam uudelleen nähdäksesi muutokset", @@ -376,6 +377,7 @@ "download_error_not_cached_on_torbox": "Tämä lataus ei ole saatavilla TorBoxissa, eikä lataustilan hakeminen TorBoxista ole toistaiseksi mahdollista.", "download_error_not_cached_on_hydra": "Tämä lataus ei ole saatavilla Nimbuksessa.", "game_removed_from_favorites": "Peli poistettu suosikeista", + "game_shared_to_clipboard": "Pelin linkki kopioitu leikepöydälle", "game_added_to_favorites": "Peli lisätty suosikkeihin", "game_removed_from_pinned": "Peli poistettu kiinnitetyistä", "game_added_to_pinned": "Peli lisätty kiinnitettyihin", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Tama jaettu latausvaihtoehto tarvitsee lahteen, jota sinulla ei viela ole." }, "activation": { "title": "Aktivoi Hydra", diff --git a/src/locales/fr/translation.json b/src/locales/fr/translation.json index 858e6f734..9650ba5f9 100644 --- a/src/locales/fr/translation.json +++ b/src/locales/fr/translation.json @@ -253,6 +253,7 @@ "download_in_progress": "Téléchargement en cours", "download_paused": "Téléchargement en pause", "last_downloaded_option": "Dernière option téléchargée", + "friend_shared_download_option": "Partagée par un ami", "create_shortcut_success": "Raccourci créé avec succès", "create_shortcut_error": "Erreur lors de la création du raccourci", "nsfw_content_title": "Ce jeu contient du contenu inapproprié", @@ -320,6 +321,7 @@ "download_error_not_cached_on_torbox": "Ce téléchargement n'est pas disponible sur TorBox, et le suivi n'est pas encore disponible.", "download_error_not_cached_on_hydra": "Ce téléchargement n'est pas disponible sur Nimbus.", "game_removed_from_favorites": "Jeu retiré des favoris", + "game_shared_to_clipboard": "Lien du jeu copié dans le presse-papiers", "game_added_to_favorites": "Jeu ajouté aux favoris", "automatically_extract_downloaded_files": "Extraire automatiquement les fichiers téléchargés", "already_in_library": "Déjà dans la bibliothèque", @@ -545,7 +547,8 @@ "download_error_torrent_no_files_selected": "Sélectionnez au moins un fichier torrent pour démarrer le téléchargement.", "download_error_torrent_invalid_file_selection": "Les fichiers torrent sélectionnés sont invalides. Veuillez recharger et réessayer.", "download_error_torrent_too_many_files": "Ce torrent contient trop de fichiers pour être affiché en toute sécurité.", - "download_error_torrent_files_unavailable": "Impossible de récupérer les fichiers torrent. Veuillez réessayer." + "download_error_torrent_files_unavailable": "Impossible de récupérer les fichiers torrent. Veuillez réessayer.", + "shared_download_source_missing": "Cette option de téléchargement partagée nécessite une source que vous n’avez pas encore." }, "activation": { "title": "Activer Hydra", diff --git a/src/locales/hu/translation.json b/src/locales/hu/translation.json index a10a16f13..28647ef21 100644 --- a/src/locales/hu/translation.json +++ b/src/locales/hu/translation.json @@ -260,6 +260,7 @@ "download_paused": "Letöltés szüneteltetve", "extracting": "Kicsomagolás", "last_downloaded_option": "Utoljára letöltött", + "friend_shared_download_option": "Barát osztotta meg", "new_download_option": "Új", "create_steam_shortcut": "Steam parancsikon létrehozása", "create_shortcut_success": "A parancsikon létrehozása sikeres", @@ -381,6 +382,7 @@ "download_error_not_cached_on_torbox": "Ez a letöltés nem elérhető a TorBoxon, és lekérdezni letöltési állapotot még nem lehet.", "download_error_not_cached_on_hydra": "Ez a letöltés nem elérhető a Nimbuson.", "game_removed_from_favorites": "Játék eltávolítva a kedvencek közül", + "game_shared_to_clipboard": "A játék linkje a vágólapra másolva", "game_added_to_favorites": "Játék hozzáadva a kedvencekhez", "game_removed_from_pinned": "Játék eltávolítva a kitűzöttek közül", "game_added_to_pinned": "Játék sikeresen kitűzve", @@ -511,7 +513,8 @@ "download_error_alldebrid_unavailable": "AllDebrid is temporarily unavailable. Please try again later.", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Ehhez a megosztott letoltési lehetoseghez olyan forras kell, amellyel meg nem rendelkezel." }, "activation": { "title": "Hydra Aktiválása", diff --git a/src/locales/id/translation.json b/src/locales/id/translation.json index e4d716cc7..20e64aeb5 100644 --- a/src/locales/id/translation.json +++ b/src/locales/id/translation.json @@ -294,6 +294,7 @@ "download_paused": "Unduhan dijeda", "extracting": "Mengekstrak", "last_downloaded_option": "Opsi unduhan terakhir", + "friend_shared_download_option": "Dibagikan oleh teman", "new_download_option": "Baru", "create_steam_shortcut": "Buat pintasan Steam", "create_shortcut_success": "Pintasan berhasil dibuat", @@ -474,6 +475,7 @@ "download_error_not_cached_on_torbox": "Unduhan ini tidak tersedia di TorBox dan pemantauan status unduhan dari TorBox belum tersedia.", "download_error_not_cached_on_hydra": "Unduhan ini tidak tersedia di Nimbus.", "game_removed_from_favorites": "Game dihapus dari favorit", + "game_shared_to_clipboard": "Tautan game disalin ke clipboard", "game_added_to_favorites": "Game ditambahkan ke favorit", "game_removed_from_pinned": "Game dihapus dari yang disematkan", "game_added_to_pinned": "Game ditambahkan ke yang disematkan", @@ -534,7 +536,8 @@ "create_steam_shortcut_modal_cancel_button": "Batal", "delete_shortcut_success": "Pintasan Steam berhasil dihapus", "delete_shortcut_error": "Gagal menghapus pintasan Steam", - "delete_steam_shortcut": "Hapus pintasan Steam" + "delete_steam_shortcut": "Hapus pintasan Steam", + "shared_download_source_missing": "Opsi unduhan bersama ini memerlukan sumber yang belum kamu miliki." }, "activation": { "title": "Aktifkan Hydra", diff --git a/src/locales/it/translation.json b/src/locales/it/translation.json index a25c13cb8..55d34ac2c 100644 --- a/src/locales/it/translation.json +++ b/src/locales/it/translation.json @@ -260,6 +260,7 @@ "download_paused": "Download in pausa", "extracting": "Estrazione", "last_downloaded_option": "Ultima opzione scaricata", + "friend_shared_download_option": "Condivisa da un amico", "new_download_option": "Nuovo", "create_steam_shortcut": "Crea collegamento Steam", "create_shortcut_success": "Collegamento creato con successo", @@ -381,6 +382,7 @@ "download_error_not_cached_on_torbox": "Questo download non è disponibile su TorBox e il controllo dello stato su TorBox non è ancora disponibile.", "download_error_not_cached_on_hydra": "Questo download non è disponibile su Nimbus.", "game_removed_from_favorites": "Gioco rimosso dai preferiti", + "game_shared_to_clipboard": "Link del gioco copiato negli appunti", "game_added_to_favorites": "Gioco aggiunto ai preferiti", "game_removed_from_pinned": "Gioco rimosso dai fissati", "game_added_to_pinned": "Gioco aggiunto ai fissati", @@ -511,7 +513,8 @@ "download_error_alldebrid_unavailable": "AllDebrid is temporarily unavailable. Please try again later.", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Questa opzione di download condivisa richiede una fonte che non hai ancora." }, "activation": { "title": "Attiva Hydra", diff --git a/src/locales/kk/translation.json b/src/locales/kk/translation.json index 770991a4e..462cd7f26 100644 --- a/src/locales/kk/translation.json +++ b/src/locales/kk/translation.json @@ -243,6 +243,7 @@ "download_in_progress": "Жүктеу жүріп жатыр", "download_paused": "Жүктеу тоқтатылды", "last_downloaded_option": "Соңғы жүктеу нұсқасы", + "friend_shared_download_option": "Dos бөлісті", "create_shortcut_success": "Жарлық жасалды", "create_shortcut_error": "Жарлық жасау мүмкін болмады", "protondb_tier": "Tier", @@ -454,6 +455,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "Oyin siltemesi almasıu taqtasına köşirildi", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Bul bolisilgen jukteu nusqasyna sizde ali joq derekköz qajet." }, "activation": { "title": "Hydra-ны белсендіру", diff --git a/src/locales/ko/translation.json b/src/locales/ko/translation.json index 43967a617..6da8e2d6a 100644 --- a/src/locales/ko/translation.json +++ b/src/locales/ko/translation.json @@ -277,6 +277,7 @@ "download_paused": "Download paused", "extracting": "Extracting", "last_downloaded_option": "Last downloaded option", + "friend_shared_download_option": "친구가 공유함", "new_download_option": "New", "create_steam_shortcut": "Create Steam shortcut", "create_shortcut_success": "Shortcut created successfully", @@ -451,6 +452,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "게임 링크가 클립보드에 복사되었습니다", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -508,7 +510,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "이 공유된 다운로드 옵션을 사용하려면 아직 없는 소스가 필요합니다." }, "activation": { "title": "Hydra 실행", diff --git a/src/locales/lv/translation.json b/src/locales/lv/translation.json index 93c5c05c6..dea3cf393 100644 --- a/src/locales/lv/translation.json +++ b/src/locales/lv/translation.json @@ -247,6 +247,7 @@ "download_in_progress": "Notiek lejupielāde", "download_paused": "Lejupielāde apturēta", "last_downloaded_option": "Pēdējais lejupielādes variants", + "friend_shared_download_option": "Drauga kopīgota", "create_steam_shortcut": "Izveidot Steam īsceļu", "create_shortcut_success": "Īsceļš izveidots", "you_might_need_to_restart_steam": "Iespējams, jums būs jāpārstartē Steam, lai redzētu izmaiņas", @@ -376,6 +377,7 @@ "download_error_not_cached_on_torbox": "Šī lejupielāde nav pieejama TorBox, un TorBox lejupielādes statusu pagaidām nav iespējams iegūt.", "download_error_not_cached_on_hydra": "Šī lejupielāde nav pieejama Nimbus.", "game_removed_from_favorites": "Spēle dzēsta no izlases", + "game_shared_to_clipboard": "Spēles saite nokopēta starpliktuvē", "game_added_to_favorites": "Spēle pievienota izlasei", "game_removed_from_pinned": "Spēle dzēsta no piespraustajiem", "game_added_to_pinned": "Spēle pievienota piespraustajiem", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Sai koplietotajai lejupielades opcijai ir vajadigs avots, kura jums vel nav." }, "activation": { "title": "Aktivizēt Hydra", diff --git a/src/locales/nb/translation.json b/src/locales/nb/translation.json index e7520d95f..411192768 100644 --- a/src/locales/nb/translation.json +++ b/src/locales/nb/translation.json @@ -243,6 +243,7 @@ "download_in_progress": "Nedlasting pågår", "download_paused": "Nedlasting satt på pause", "last_downloaded_option": "Siste nedlastingsmulighet", + "friend_shared_download_option": "Delt av en venn", "create_shortcut_success": "Opprettelse av snarvei vellykket", "create_shortcut_error": "Feil under oprettelsen av snarvei", "nsfw_content_title": "Dette spillet inneholder upassende innhold", @@ -454,6 +455,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "Spilllenke kopiert til utklippstavlen", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Dette delte nedlastingsalternativet krever en kilde du ikke har ennå." }, "activation": { "title": "Aktivér Hydra", diff --git a/src/locales/nl/translation.json b/src/locales/nl/translation.json index f2a8695e0..008d52a66 100644 --- a/src/locales/nl/translation.json +++ b/src/locales/nl/translation.json @@ -277,6 +277,7 @@ "download_paused": "Download paused", "extracting": "Extracting", "last_downloaded_option": "Last downloaded option", + "friend_shared_download_option": "Gedeeld door een vriend", "new_download_option": "New", "create_steam_shortcut": "Create Steam shortcut", "create_shortcut_success": "Shortcut created successfully", @@ -451,6 +452,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "Gamelink gekopieerd naar klembord", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -508,7 +510,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Deze gedeelde downloadoptie heeft een bron nodig die je nog niet hebt." }, "activation": { "title": "Activeer Hydra", diff --git a/src/locales/pl/translation.json b/src/locales/pl/translation.json index ee6e21077..9b16f97c0 100644 --- a/src/locales/pl/translation.json +++ b/src/locales/pl/translation.json @@ -263,6 +263,7 @@ "download_paused": "Pobieranie wstrzymane", "extracting": "Rozpakowywanie", "last_downloaded_option": "Ostatnio pobrana opcja", + "friend_shared_download_option": "Udostępnione przez znajomego", "new_download_option": "Nowa", "create_steam_shortcut": "Utwórz skrót Steam", "create_shortcut_success": "Skrót utworzony pomyślnie", @@ -442,6 +443,7 @@ "download_error_not_cached_on_torbox": "To pobieranie nie jest dostępne na TorBox, a sprawdzanie statusu pobierania z TorBox nie jest jeszcze dostępne.", "download_error_not_cached_on_hydra": "To pobieranie nie jest dostępne na Nimbus.", "game_removed_from_favorites": "Gra usunięta z ulubionych", + "game_shared_to_clipboard": "Link do gry skopiowany do schowka", "game_added_to_favorites": "Gra dodana do ulubionych", "game_removed_from_pinned": "Gra usunięta z przypiętych", "game_added_to_pinned": "Gra dodana do przypiętych", @@ -530,7 +532,8 @@ "previous_screenshot": "Poprzedni zrzut ekranu", "next_screenshot": "Następny zrzut ekranu", "screenshot": "Zrzut ekranu {{number}}", - "open_screenshot": "Otwórz zrzut ekranu {{number}}" + "open_screenshot": "Otwórz zrzut ekranu {{number}}", + "shared_download_source_missing": "Ta udostepniona opcja pobierania wymaga zrodla, ktorego jeszcze nie masz." }, "activation": { "enter_activation_code": "Wpisz kod aktywacyjny", diff --git a/src/locales/pt-BR/translation.json b/src/locales/pt-BR/translation.json index d373df3c3..71c1de54d 100755 --- a/src/locales/pt-BR/translation.json +++ b/src/locales/pt-BR/translation.json @@ -238,6 +238,8 @@ "download_paused": "Download pausado", "extracting": "Extraindo", "last_downloaded_option": "Última opção baixada", + "friend_shared_download_option": "Compartilhada por amigo", + "shared_download_source_missing": "Esta opção compartilhada precisa de uma fonte que você ainda não tem.", "new_download_option": "Novo", "create_steam_shortcut": "Criar atalho na Steam", "create_shortcut_success": "Atalho criado com sucesso", @@ -320,6 +322,7 @@ "download_error_not_cached_on_torbox": "Este download não está disponível no TorBox e a verificação do status do download não está disponível.", "download_error_not_cached_on_hydra": "Este download não está disponível no Nimbus.", "game_removed_from_favorites": "Jogo removido dos favoritos", + "game_shared_to_clipboard": "Link do jogo copiado para a área de transferência", "game_added_to_favorites": "Jogo adicionado aos favoritos", "add_to_favorites": "Adicionar aos favoritos", "remove_from_favorites": "Remover dos favoritos", diff --git a/src/locales/pt-PT/translation.json b/src/locales/pt-PT/translation.json index f0971c681..cda1a0c3a 100644 --- a/src/locales/pt-PT/translation.json +++ b/src/locales/pt-PT/translation.json @@ -219,6 +219,8 @@ "download_paused": "Transferência em pausa", "extracting": "A extrair", "last_downloaded_option": "Última opção transferida", + "friend_shared_download_option": "Partilhada por amigo", + "shared_download_source_missing": "Esta opção partilhada precisa de uma fonte que ainda não tens.", "new_download_option": "Novo", "create_steam_shortcut": "Criar atalho Steam", "create_shortcut_success": "Atalho criado com sucesso", @@ -351,6 +353,7 @@ "download_error_not_cached_on_torbox": "Este download não está disponível no TorBox e a verificação do status do download não está disponível.", "download_error_not_cached_on_hydra": "Este download não está disponível no Nimbus.", "game_removed_from_favorites": "Jogo removido dos favoritos", + "game_shared_to_clipboard": "Link do jogo copiado para a área de transferência", "game_added_to_favorites": "Jogo adicionado aos favoritos", "game_removed_from_pinned": "Jogo removido dos fixados", "game_added_to_pinned": "Jogo adicionado aos fixados", diff --git a/src/locales/ro/translation.json b/src/locales/ro/translation.json index 1568c654e..cc7d865ad 100644 --- a/src/locales/ro/translation.json +++ b/src/locales/ro/translation.json @@ -277,6 +277,7 @@ "download_paused": "Download paused", "extracting": "Extracting", "last_downloaded_option": "Last downloaded option", + "friend_shared_download_option": "Partajată de un prieten", "new_download_option": "New", "create_steam_shortcut": "Create Steam shortcut", "create_shortcut_success": "Shortcut created successfully", @@ -451,6 +452,7 @@ "download_error_not_cached_on_torbox": "This download is not available on TorBox and polling download status from TorBox is not yet available.", "download_error_not_cached_on_hydra": "This download is not available on Nimbus.", "game_removed_from_favorites": "Game removed from favorites", + "game_shared_to_clipboard": "Linkul jocului a fost copiat în clipboard", "game_added_to_favorites": "Game added to favorites", "game_removed_from_pinned": "Game removed from pinned", "game_added_to_pinned": "Game added to pinned", @@ -508,7 +510,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Aceasta optiune de descarcare partajata are nevoie de o sursa pe care inca nu o ai." }, "activation": { "title": "Activează Hydra", diff --git a/src/locales/ru/translation.json b/src/locales/ru/translation.json index 20abfc314..7a2bb9e91 100644 --- a/src/locales/ru/translation.json +++ b/src/locales/ru/translation.json @@ -262,6 +262,7 @@ "download_paused": "Загрузка приостановлена", "extracting": "Распаковка", "last_downloaded_option": "Последний вариант загрузки", + "friend_shared_download_option": "Поделился друг", "new_download_option": "Новый", "create_steam_shortcut": "Создать ярлык Steam", "create_shortcut_success": "Ярлык создан", @@ -393,6 +394,7 @@ "download_error_not_cached_on_torbox": "Эта загрузка недоступна на TorBox, и получить статус загрузки с TorBox пока невозможно.", "download_error_not_cached_on_hydra": "Эта загрузка недоступна на Nimbus.", "game_removed_from_favorites": "Игра удалена из избранного", + "game_shared_to_clipboard": "Ссылка на игру скопирована в буфер обмена", "game_added_to_favorites": "Игра добавлена в избранное", "game_removed_from_pinned": "Игра удалена из закрепленных", "game_added_to_pinned": "Игра добавлена в закрепленные", @@ -470,7 +472,8 @@ "source_offline": "Source is offline", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Для этого общего варианта загрузки нужен источник, которого у вас пока нет." }, "activation": { "title": "Активировать Hydra", diff --git a/src/locales/sl/translation.json b/src/locales/sl/translation.json index 082dea162..42da7ca7a 100644 --- a/src/locales/sl/translation.json +++ b/src/locales/sl/translation.json @@ -254,6 +254,7 @@ "download_paused": "Prenos v premoru", "extracting": "Razpakiranje", "last_downloaded_option": "Zadnja prenesena možnost", + "friend_shared_download_option": "Deljeno od prijatelja", "new_download_option": "Novo", "create_steam_shortcut": "Ustvari Steam bližnjico", "create_shortcut_success": "Bližnjica je bila uspešno ustvarjena", @@ -375,6 +376,7 @@ "download_error_not_cached_on_torbox": "Ta prenos ni na voljo v TorBox in preverjanje statusa prenosa iz TorBox še ni na voljo.", "download_error_not_cached_on_hydra": "Ta prenos ni na voljo v Nimbus.", "game_removed_from_favorites": "Igra odstranjena iz priljubljenih", + "game_shared_to_clipboard": "Povezava do igre kopirana v odlozisce", "game_added_to_favorites": "Igra dodana med priljubljene", "game_removed_from_pinned": "Igra odstranjena iz pripetih", "game_added_to_pinned": "Igra pripeta", @@ -511,7 +513,8 @@ "source_offline": "Source is offline", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Ta deljena moznost prenosa potrebuje vir, ki ga se nimate." }, "activation": { "title": "Aktiviraj Hydra", diff --git a/src/locales/sv/translation.json b/src/locales/sv/translation.json index 37fb1f97a..29655e95c 100644 --- a/src/locales/sv/translation.json +++ b/src/locales/sv/translation.json @@ -244,6 +244,7 @@ "download_in_progress": "Nedladdning pågår", "download_paused": "Nedladdning pausad", "last_downloaded_option": "Senast nedladdade alternativ", + "friend_shared_download_option": "Delad av en vän", "create_steam_shortcut": "Skapa Steam-genväg", "create_shortcut_success": "Genväg skapad", "you_might_need_to_restart_steam": "Du kan behöva starta om Steam för att se ändringarna", @@ -313,6 +314,7 @@ "download_error_not_cached_on_torbox": "Denna nedladdning finns inte på TorBox och statusövervakning från TorBox är ännu inte tillgänglig.", "download_error_not_cached_on_hydra": "Denna nedladdning finns inte på Nimbus.", "game_removed_from_favorites": "Spelet togs bort från favoriter", + "game_shared_to_clipboard": "Spellänk kopierad till urklipp", "game_added_to_favorites": "Spelet lades till i favoriter", "automatically_extract_downloaded_files": "Extrahera nedladdade filer automatiskt", "create_start_menu_shortcut": "Skapa genväg i Startmenyn", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Det har delade nedladdningsalternativet kraver en kalla som du inte har annu." }, "activation": { "title": "Aktivera Hydra", diff --git a/src/locales/tr/translation.json b/src/locales/tr/translation.json index 33cf802ae..0096e7a1e 100644 --- a/src/locales/tr/translation.json +++ b/src/locales/tr/translation.json @@ -244,6 +244,7 @@ "download_in_progress": "İndirme sürüyor", "download_paused": "İndirme duraklatıldı", "last_downloaded_option": "Son indirilen seçenek", + "friend_shared_download_option": "Arkadaş tarafından paylaşıldı", "create_steam_shortcut": "Steam kısayolu oluştur", "create_shortcut_success": "Kısayol başarıyla oluşturuldu", "you_might_need_to_restart_steam": "Değişiklikleri görmek için Steam'i yeniden başlatmanız gerekebilir", @@ -313,6 +314,7 @@ "download_error_not_cached_on_torbox": "Bu indirme TorBox üzerinde mevcut değil ve durum sorgulanamıyor.", "download_error_not_cached_on_hydra": "Bu indirme Nimbus üzerinde mevcut değil.", "game_removed_from_favorites": "Oyun favorilerden kaldırıldı", + "game_shared_to_clipboard": "Oyun bağlantısı panoya kopyalandı", "game_added_to_favorites": "Oyun favorilere eklendi", "automatically_extract_downloaded_files": "İndirilen dosyaları otomatik çıkart", "create_start_menu_shortcut": "Başlat Menüsüne kısayol oluştur", @@ -511,7 +513,8 @@ "source_offline": "Source is offline", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Bu paylasilan indirme secenegi, henuz sahip olmadiginiz bir kaynak gerektiriyor." }, "activation": { "title": "Hydra'yı Etkinleştir", diff --git a/src/locales/uk/translation.json b/src/locales/uk/translation.json index 388ea039e..2df867385 100644 --- a/src/locales/uk/translation.json +++ b/src/locales/uk/translation.json @@ -244,6 +244,7 @@ "executable_section_title": "Файл", "executable_path_in_use": "Виконуваний файл наразі використовується \"{{game}}\"", "last_downloaded_option": "Останній варіант завантаження", + "friend_shared_download_option": "Поділився друг", "next_screenshot": "Наступний скрішнот", "no_executable_selected": "Файл не вибрано", "no_shop_details": "Не вдалося отримати опис", @@ -314,6 +315,7 @@ "download_error_not_cached_on_torbox": "Це завантаження недоступне на TorBox, і перевірка статусу завантаження з TorBox наразі недоступна.", "download_error_not_cached_on_hydra": "Це завантаження недоступне через Nimbus.", "game_removed_from_favorites": "Гра видалена з улюбленних", + "game_shared_to_clipboard": "Посилання на гру скопійовано в буфер обміну", "game_added_to_favorites": "Гра була добавлена у улюблені", "automatically_extract_downloaded_files": "Автоматично розархівувати завантаженні файли", "create_steam_shortcut": "Створити ярлик Steam", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Цей спільний варіант завантаження потребує джерела, якого у вас ще немає." }, "activation": { "title": "Активувати Hydra", diff --git a/src/locales/uz/translation.json b/src/locales/uz/translation.json index bc7eaa432..c25d34b68 100644 --- a/src/locales/uz/translation.json +++ b/src/locales/uz/translation.json @@ -215,6 +215,7 @@ "download_in_progress": "Yuklab olish davom etmoqda", "download_paused": "Yuklab olish to'xtatilgan", "last_downloaded_option": "Oxirgi yuklab olish varianti", + "friend_shared_download_option": "Doʻst ulashdi", "create_shortcut_success": "Yorliq yaratildi", "create_shortcut_error": "Yorliq yaratib bo'lmadi", "allow_nsfw_content": "Davom etish", @@ -282,6 +283,7 @@ "download_error_not_cached_on_torbox": "Bu yuklab olish TorBox'da mavjud emas, va TorBox'dan yuklab olish holatini olish hozircha mumkin emas.", "game_added_to_favorites": "O'yin sevimlilarga qo'shildi", "game_removed_from_favorites": "O'yin sevimlilardan olib tashlandi", + "game_shared_to_clipboard": "Oyin havolasi vaqtinchalik xotiraga nusxalandi", "automatically_extract_downloaded_files": "Yuklab olingan fayllarni avtomatik chiqarish", "open_download_options": "Open download options", "download_options_zero": "No download option", @@ -511,7 +513,8 @@ "hide": "Hide", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "Bu ulashilgan yuklab olish varianti sizda hali yoq manbani talab qiladi." }, "activation": { "title": "Hydra'ni faollashtirish", diff --git a/src/locales/zh/translation.json b/src/locales/zh/translation.json index bef149e4a..9f9f71b74 100644 --- a/src/locales/zh/translation.json +++ b/src/locales/zh/translation.json @@ -243,6 +243,7 @@ "download_in_progress": "下载进行中", "download_paused": "下载暂停", "last_downloaded_option": "上次下载的选项", + "friend_shared_download_option": "好友分享", "create_shortcut_success": "成功创建快捷方式", "create_shortcut_error": "创建快捷方式出错", "nsfw_content_title": "本游戏包含不适合展示的内容", @@ -313,6 +314,7 @@ "freeze_backup": "固定以免被自动备份覆盖", "game_added_to_favorites": "游戏已添加到收藏", "game_removed_from_favorites": "游戏已从收藏中移除", + "game_shared_to_clipboard": "游戏链接已复制到剪贴板", "invalid_wine_prefix_path": "无效的Wine前置路径", "invalid_wine_prefix_path_description": "Wine前置的路径无效。请检查路径并重试。", "launch_options": "启动选项", @@ -511,7 +513,8 @@ "source_offline": "Source is offline", "create_steam_shortcut_modal_vr_flag": "VR Game (In Steam: update the VR flag or delete/recreate the shortcut)", "create_steam_shortcut_modal_create_button": "Create", - "create_steam_shortcut_modal_cancel_button": "Cancel" + "create_steam_shortcut_modal_cancel_button": "Cancel", + "shared_download_source_missing": "此共享下载选项需要一个你尚未拥有的源。" }, "activation": { "title": "激活 Hydra", diff --git a/src/main/index.ts b/src/main/index.ts index e1430226f..56b1afaa9 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -209,6 +209,31 @@ const handleDeepLinkPath = (uri?: string) => { return; } + if (url.host === "game") { + const shop = url.searchParams.get("shop") as GameShop | null; + const objectId = url.searchParams.get("objectId"); + const repackId = url.searchParams.get("repackId"); + const sourceUrl = url.searchParams.get("sourceUrl"); + + if (shop && objectId) { + const params = new URLSearchParams(); + + if (repackId) { + params.set("repackId", repackId); + } + + if (sourceUrl) { + params.set("sourceUrl", sourceUrl); + } + + const query = params.toString(); + + WindowManager.redirect(`game/${shop}/${objectId}${query ? `?${query}` : ""}`); + } + + return; + } + if (url.host === "install-source") { WindowManager.redirect(`settings${url.search}`); return; diff --git a/src/renderer/src/context/game-details/game-details.context.tsx b/src/renderer/src/context/game-details/game-details.context.tsx index 36c4878a4..c1a129990 100644 --- a/src/renderer/src/context/game-details/game-details.context.tsx +++ b/src/renderer/src/context/game-details/game-details.context.tsx @@ -51,6 +51,7 @@ export const gameDetailsContext = createContext({ setGameOptionsInitialCategory: () => {}, setShowRepacksModal: () => {}, setHasNSFWContentBlocked: () => {}, + getDownloadSourceById: () => null }); const { Provider } = gameDetailsContext; @@ -88,6 +89,7 @@ export function GameDetailsContextProvider({ const [gameOptionsInitialCategory, setGameOptionsInitialCategory] = useState("general"); const [repacks, setRepacks] = useState([]); + const [downloadSources, setDownloadSources] = useState([]); const { i18n } = useTranslation("game_details"); const location = useLocation(); @@ -324,6 +326,7 @@ export function GameDetailsContextProvider({ "downloadSources" )) as DownloadSource[]; const sources = orderBy(sourcesRaw, "createdAt", "desc"); + setDownloadSources(sources); const params = { take: 100, @@ -348,6 +351,12 @@ export function GameDetailsContextProvider({ fetchDownloadSources(); }, [shop, objectId]); + const getDownloadSourceById = useCallback( + (downloadSourceId: string) => + downloadSources.find((source) => source.id === downloadSourceId) ?? null, + [downloadSources] + ); + const getDownloadsPath = async () => { if (userPreferences?.downloadsPath) return userPreferences.downloadsPath; return window.electron.getDefaultDownloadsPath(); @@ -400,6 +409,7 @@ export function GameDetailsContextProvider({ setShowRepacksModal, setShowGameOptionsModal, setGameOptionsInitialCategory, + getDownloadSourceById }} > {children} diff --git a/src/renderer/src/context/game-details/game-details.context.types.ts b/src/renderer/src/context/game-details/game-details.context.types.ts index e2f25da3f..c52c302b9 100644 --- a/src/renderer/src/context/game-details/game-details.context.types.ts +++ b/src/renderer/src/context/game-details/game-details.context.types.ts @@ -1,4 +1,5 @@ import type { + DownloadSource, GameRepack, GameShop, GameStats, @@ -39,4 +40,5 @@ export interface GameDetailsContext { React.SetStateAction >; setHasNSFWContentBlocked: React.Dispatch>; + getDownloadSourceById: (downloadSourceId: string) => DownloadSource | null; } diff --git a/src/renderer/src/pages/game-details/game-details-content.tsx b/src/renderer/src/pages/game-details/game-details-content.tsx index 1a391b0ad..702579cb7 100644 --- a/src/renderer/src/pages/game-details/game-details-content.tsx +++ b/src/renderer/src/pages/game-details/game-details-content.tsx @@ -65,6 +65,7 @@ export function GameDetailsContent() { shop, setShowGameOptionsModal, setGameOptionsInitialCategory, + setShowRepacksModal } = useContext(gameDetailsContext); const { userDetails, hasActiveSubscription } = useUserDetails(); @@ -143,6 +144,14 @@ export function GameDetailsContent() { } }, [searchParams, objectId]); + // Open repacks modal if repackId was passed to this page in URL + useEffect(() => { + const repackId = searchParams.get("repackId"); + if (repackId) { + setShowRepacksModal(true) + } + }, [searchParams, objectId]); + const isCustomGame = game?.shop === "custom"; const heroImage = isCustomGame diff --git a/src/renderer/src/pages/game-details/game-details.tsx b/src/renderer/src/pages/game-details/game-details.tsx index c6f0f2e58..83ac0314f 100644 --- a/src/renderer/src/pages/game-details/game-details.tsx +++ b/src/renderer/src/pages/game-details/game-details.tsx @@ -35,6 +35,8 @@ export default function GameDetails() { const fromRandomizer = searchParams.get("fromRandomizer"); const gameTitle = searchParams.get("title"); + const friendSharedRepackId = searchParams.get("repackId"); + const sharedSourceUrl = searchParams.get("sourceUrl"); const { startDownload, addGameToQueue } = useDownload(); @@ -166,6 +168,8 @@ export default function GameDetails() { setShowRepacksModal(false)} /> diff --git a/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx b/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx index 913597710..a04329e65 100644 --- a/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx +++ b/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx @@ -7,6 +7,7 @@ import { PinSlashIcon, PlayIcon, PlusCircleIcon, + ShareIcon } from "@primer/octicons-react"; import { Button } from "@renderer/components"; import { @@ -41,6 +42,7 @@ export function HeroPanelActions() { setShowRepacksModal, updateGame, selectGameExecutable, + getDownloadSourceById } = useContext(gameDetailsContext); const { lastPacket } = useDownload(); @@ -160,6 +162,38 @@ export function HeroPanelActions() { } }; + const toggleShareGame = async () => { + if (!game?.download?.uri) return; + + const downloadUri = game.download.uri; + setToggleLibraryGameDisabled(true); + + try { + const downloadedRepack = repacks.find((repack) => + repack.uris.includes(downloadUri) + ); + + if (!downloadedRepack) return; + + const source = getDownloadSourceById(downloadedRepack.downloadSourceId); + const sourceUrl = source?.url; + + if (!sourceUrl) return; + + const params = new URLSearchParams({ + shop: game.shop, + objectId: game.objectId, + repackId: downloadedRepack.id, + sourceUrl: sourceUrl + }); + + await navigator.clipboard.writeText(`hydralauncher://game?${params.toString()}`); + showSuccessToast(t("game_shared_to_clipboard")); + } finally { + setToggleLibraryGameDisabled(false); + } + }; + const openGame = async () => { if (game) { if (game.executablePath) { @@ -277,14 +311,28 @@ export function HeroPanelActions() { {userDetails && game.shop !== "custom" && ( - + <> + + { + game.download && ( + + ) + } + )} + + )} +
{filteredRepacks.length === 0 ? (
@@ -379,8 +415,8 @@ export function RepacksModal({
) : ( filteredRepacks.map((repack) => { - const isLastDownloadedOption = - checkIfLastDownloadedOption(repack); + const isLastDownloadedOption = checkIfLastDownloadedOption(repack); + const isFriendSharedDownloadOption = checkIfWasSharedByFriend(repack); const availabilityStatus = getRepackAvailabilityStatus(repack); const tooltipId = `availability-orb-${repack.id}`; @@ -413,6 +449,10 @@ export function RepacksModal({ {t("last_downloaded_option")} )} + {isFriendSharedDownloadOption && ( + {t("friend_shared_download_option")} + )} +

{repack.fileSize} - {repack.downloadSourceName} -{" "} {repack.uploadDate ? formatDate(repack.uploadDate) : ""} From 27f0bb9810c3abf6cffbd20ba7365ab525210927 Mon Sep 17 00:00:00 2001 From: anton3x Date: Wed, 25 Mar 2026 16:00:41 +0000 Subject: [PATCH 2/3] fix: share game link for non-logged in users --- .../game-details/hero/hero-panel-actions.tsx | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx b/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx index a04329e65..d783e2689 100644 --- a/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx +++ b/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx @@ -7,7 +7,7 @@ import { PinSlashIcon, PlayIcon, PlusCircleIcon, - ShareIcon + ShareIcon, } from "@primer/octicons-react"; import { Button } from "@renderer/components"; import { @@ -42,7 +42,7 @@ export function HeroPanelActions() { setShowRepacksModal, updateGame, selectGameExecutable, - getDownloadSourceById + getDownloadSourceById, } = useContext(gameDetailsContext); const { lastPacket } = useDownload(); @@ -184,10 +184,12 @@ export function HeroPanelActions() { shop: game.shop, objectId: game.objectId, repackId: downloadedRepack.id, - sourceUrl: sourceUrl + sourceUrl: sourceUrl, }); - await navigator.clipboard.writeText(`hydralauncher://game?${params.toString()}`); + await navigator.clipboard.writeText( + `hydralauncher://game?${params.toString()}` + ); showSuccessToast(t("game_shared_to_clipboard")); } finally { setToggleLibraryGameDisabled(false); @@ -310,28 +312,28 @@ export function HeroPanelActions() { {game.favorite ? : } - {userDetails && game.shop !== "custom" && ( + {game.shop !== "custom" && ( <> - { - game.download && ( - - ) + userDetails && () } + {game.download && ( + + )} )} From 90942fbee9d016170ed94e1c2c47797a0938b858 Mon Sep 17 00:00:00 2001 From: anton3x Date: Tue, 14 Apr 2026 19:15:54 +0100 Subject: [PATCH 3/3] fix: share game link for non-logged in users --- .../game-details/game-details-content.tsx | 4 +-- .../game-details/hero/hero-panel-actions.tsx | 24 +++++++++----- .../game-details/modals/repacks-modal.scss | 31 +++++++++---------- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/renderer/src/pages/game-details/game-details-content.tsx b/src/renderer/src/pages/game-details/game-details-content.tsx index 702579cb7..cf3866f71 100644 --- a/src/renderer/src/pages/game-details/game-details-content.tsx +++ b/src/renderer/src/pages/game-details/game-details-content.tsx @@ -65,7 +65,7 @@ export function GameDetailsContent() { shop, setShowGameOptionsModal, setGameOptionsInitialCategory, - setShowRepacksModal + setShowRepacksModal, } = useContext(gameDetailsContext); const { userDetails, hasActiveSubscription } = useUserDetails(); @@ -148,7 +148,7 @@ export function GameDetailsContent() { useEffect(() => { const repackId = searchParams.get("repackId"); if (repackId) { - setShowRepacksModal(true) + setShowRepacksModal(true); } }, [searchParams, objectId]); diff --git a/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx b/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx index d783e2689..1d758715c 100644 --- a/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx +++ b/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx @@ -52,7 +52,7 @@ export function HeroPanelActions() { const { updateLibrary } = useLibrary(); - const { showSuccessToast } = useToast(); + const { showSuccessToast, showErrorToast } = useToast(); const { t } = useTranslation("game_details"); @@ -170,15 +170,21 @@ export function HeroPanelActions() { try { const downloadedRepack = repacks.find((repack) => - repack.uris.includes(downloadUri) + repack.uris.some((uri) => uri.includes(downloadUri)) ); - if (!downloadedRepack) return; + if (!downloadedRepack) { + showErrorToast(t("try_again")); + return; + } const source = getDownloadSourceById(downloadedRepack.downloadSourceId); const sourceUrl = source?.url; - if (!sourceUrl) return; + if (!sourceUrl) { + showErrorToast(t("shared_download_source_missing")); + return; + } const params = new URLSearchParams({ shop: game.shop, @@ -191,6 +197,8 @@ export function HeroPanelActions() { `hydralauncher://game?${params.toString()}` ); showSuccessToast(t("game_shared_to_clipboard")); + } catch { + showErrorToast(t("try_again")); } finally { setToggleLibraryGameDisabled(false); } @@ -314,16 +322,16 @@ export function HeroPanelActions() { {game.shop !== "custom" && ( <> - { - userDetails && () - } + + )} {game.download && (