From a92c65be53b4b897315830d55ed32d338888fea5 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Thu, 3 Aug 2023 03:52:13 +0200 Subject: [PATCH] [feature] Add waiting for Steam app approval modal --- assets/images/steam/login_mobile_auth.png | Bin 0 -> 8553 bytes assets/jsons/translations/de.json | 6 +++ assets/jsons/translations/en.json | 6 +++ assets/jsons/translations/es.json | 6 +++ assets/jsons/translations/fr.json | 6 +++ assets/jsons/translations/ru.json | 6 +++ .../steam-mobile-approve-modal.component.tsx | 39 ++++++++++++++++++ .../services/bs-downloader.service.ts | 6 ++- 8 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 assets/images/steam/login_mobile_auth.png create mode 100644 src/renderer/components/modal/modal-types/steam-mobile-approve-modal.component.tsx diff --git a/assets/images/steam/login_mobile_auth.png b/assets/images/steam/login_mobile_auth.png new file mode 100644 index 0000000000000000000000000000000000000000..e83a4f7bc203c0c939dcf3a035539e30e290521e GIT binary patch literal 8553 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 Jow#w({{W5olX3t6 literal 0 HcmV?d00001 diff --git a/assets/jsons/translations/de.json b/assets/jsons/translations/de.json index f8907647..57287cd0 100644 --- a/assets/jsons/translations/de.json +++ b/assets/jsons/translations/de.json @@ -509,6 +509,12 @@ "submit": "Anmelden" } }, + "steam-auth-approve":{ + "title": "Warten auf Bestätigung", + "protected-by-mobile-auth": "Konto durch mobile Authentifizierung geschützt.", + "use-steam-app-to-approve": "Verwenden Sie die Steam Mobile-App, um die Verbindung zu bestätigen...", + "not-access-to-steam-app": "Ich habe keinen Zugang zur Steam Mobile-App" + }, "steam-credentials": { "title": "Steam Anmeldeinformationen", "p-1": "Die Anmeldeinformationen werden nur zum Herunterladen des Spiels verwendet, da Steam überprüfen muss, ob Du das Spiel bezahlt hast, um es herunterladen zu dürfen. Sie werden nicht gespeichert und direkt an DepotDownloader weitergegeben. Wenn Du deine Anmeldeinformationen nicht eingeben möchtest, kannst Du diesem Tutorial folgen:", diff --git a/assets/jsons/translations/en.json b/assets/jsons/translations/en.json index 3c296b47..daf45831 100644 --- a/assets/jsons/translations/en.json +++ b/assets/jsons/translations/en.json @@ -509,6 +509,12 @@ "submit": "Sign in" } }, + "steam-auth-approve":{ + "title": "Waiting for confirmation", + "protected-by-mobile-auth": "Account protected by mobile authenticator.", + "use-steam-app-to-approve": "Use the Steam mobile app to confirm the connection...", + "not-access-to-steam-app": "I don't have access to the Steam mobile app" + }, "steam-credentials": { "title": "Steam Credentials", "p-1": "The credentials are only used to download the game because steam need to verify that you paid the game in order to be allowed to download it. They aren't saved and directly passed to DepotDownloader. If you don't want to enter your credentials you can follow this tutorial :", diff --git a/assets/jsons/translations/es.json b/assets/jsons/translations/es.json index 6392ff57..9cbeaaf4 100644 --- a/assets/jsons/translations/es.json +++ b/assets/jsons/translations/es.json @@ -508,6 +508,12 @@ "submit": "Iniciar sesión" } }, + "steam-auth-approve":{ + "title": "Esperando confirmación", + "protected-by-mobile-auth": "Cuenta protegida por el autenticador móvil.", + "use-steam-app-to-approve": "Use la aplicación móvil de Steam para confirmar la conexión...", + "not-access-to-steam-app": "No tengo acceso a la aplicación móvil de Steam" + }, "steam-credentials": { "title": "Steam Credentials", "p-1": "Las credenciales sólo se utilizan para descargar el juego porque steam necesita verificar que has pagado el juego para que se te permita descargarlo. No se guardan y se pasan directamente a DepotDownloader. Si no quieres introducir tus credenciales puedes seguir este tutorial :", diff --git a/assets/jsons/translations/fr.json b/assets/jsons/translations/fr.json index 23ac8c5f..7524ec91 100644 --- a/assets/jsons/translations/fr.json +++ b/assets/jsons/translations/fr.json @@ -508,6 +508,12 @@ "submit": "Se connecter" } }, + "steam-auth-approve":{ + "title": "Attente de confirmation", + "protected-by-mobile-auth": "Compte protégé par l'authentificateur mobile.", + "use-steam-app-to-approve": "Utilisez l'application mobile Steam pour confirmer la connexion...", + "not-access-to-steam-app": "Je n'ai pas accès à l'application mobile Steam" + }, "steam-credentials": { "title": "Steam Credentials", "p-1": "Les informations d'identification ne sont utilisées que pour télécharger le jeu, car Steam doit vérifier que vous avez payé le jeu afin d'être autorisé à le télécharger. Ils ne sont pas sauvegardés et transmis directement à DepotDownloader. Si vous ne voulez pas entrer vos informations d'identification, vous pouvez suivre ce tutoriel :", diff --git a/assets/jsons/translations/ru.json b/assets/jsons/translations/ru.json index cd0e3ecc..cabdd6a4 100644 --- a/assets/jsons/translations/ru.json +++ b/assets/jsons/translations/ru.json @@ -509,6 +509,12 @@ "submit": "Войти" } }, + "steam-auth-approve":{ + "title": "Ожидание подтверждения", + "protected-by-mobile-auth": "Учетная запись защищена мобильным аутентификатором.", + "use-steam-app-to-approve": "Используйте мобильное приложение Steam для подтверждения подключения...", + "not-access-to-steam-app": "У меня нет доступа к мобильному приложению Steam" + }, "steam-credentials": { "title": "Данные входа Steam", "p-1": "Данные входа используются только при скачивании, чтобы проверить наличие у вас Beat Saber, это нужно Steam, чтобы разрешить скачивание. Они не сохраняются и напрямую передаются в DepotDownloader. Если вы не хотите вводить данные для входа, воспользуйтесь руководством(Оно на английском языке) :", diff --git a/src/renderer/components/modal/modal-types/steam-mobile-approve-modal.component.tsx b/src/renderer/components/modal/modal-types/steam-mobile-approve-modal.component.tsx new file mode 100644 index 00000000..4a95050e --- /dev/null +++ b/src/renderer/components/modal/modal-types/steam-mobile-approve-modal.component.tsx @@ -0,0 +1,39 @@ +import { ModalComponent, ModalExitCode } from "../../../services/modale.service"; +import BeatWaiting from "../../../../../assets/images/apngs/beat-waiting.png"; +import LoginMobileAuthImage from "../../../../../assets/images/steam/login_mobile_auth.png"; +import { BsmImage } from "renderer/components/shared/bsm-image.component"; +import { useTranslation } from "renderer/hooks/use-translation.hook"; +import { Observable } from "rxjs"; +import { useOnUpdate } from "renderer/hooks/use-on-update.hook"; + +export const SteamMobileApproveModal: ModalComponent }> = ({ resolver, data }) => { + + const t = useTranslation(); + + useOnUpdate(() => { + const sub = data.logged$.subscribe({ + next: () => resolver({ exitCode: ModalExitCode.COMPLETED }), + error: () => resolver({ exitCode: ModalExitCode.NO_CHOICE }), + complete: () => resolver({ exitCode: ModalExitCode.NO_CHOICE }), + }); + + return () => sub.unsubscribe(); + }, []); + + return ( +
+

{t("modals.steam-auth-approve.title")}

+ +

{t("modals.steam-auth-approve.protected-by-mobile-auth")}

+ +
+ +
+

{t("modals.steam-auth-approve.use-steam-app-to-approve")}

+
+ +
+ {t("modals.steam-auth-approve.not-access-to-steam-app")} +
+ ); +}; \ No newline at end of file diff --git a/src/renderer/services/bs-downloader.service.ts b/src/renderer/services/bs-downloader.service.ts index 93902338..ccfbf2cc 100644 --- a/src/renderer/services/bs-downloader.service.ts +++ b/src/renderer/services/bs-downloader.service.ts @@ -14,6 +14,7 @@ import { GuardModal } from "renderer/components/modal/modal-types/guard-modal.co import { LinkOpenerService } from "./link-opener.service"; import { DepotDownloaderErrorEvent, DepotDownloaderEvent, DepotDownloaderEventType, DepotDownloaderInfoEvent, DepotDownloaderSubTypeOfEventType, DepotDownloaderWarningEvent } from "../../shared/models/depot-downloader.model"; import equal from "fast-deep-equal"; +import { SteamMobileApproveModal } from "renderer/components/modal/modal-types/steam-mobile-approve-modal.component"; export class BsDownloaderService { private static instance: BsDownloaderService; @@ -123,7 +124,10 @@ export class BsDownloaderService { take(1), ).subscribe(async () => { const logged$ = events$.pipe(filter(event => event.subType === DepotDownloaderInfoEvent.SteamID), take(1)); - // Show awaiting mobile confirmation modal + const res = await this.modalService.openModal(SteamMobileApproveModal, { logged$ }); + if(res.exitCode !== ModalExitCode.COMPLETED){ + return this.stopDownload(); + } })); subs.push(events$.pipe(