From bbe19527327314a3d3c8377a1af1a5116723f807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esa=C3=BA=20G=C3=B3mez?= Date: Wed, 17 Sep 2025 13:32:25 -0600 Subject: [PATCH 1/2] feat(onboarding): validate phone uniqueness and prevent upgrade when number is already registered --- app/screens/phone-auth-screen/phone-login-input.tsx | 10 +++++----- .../phone-auth-screen/request-phone-code-login.ts | 8 +++++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/screens/phone-auth-screen/phone-login-input.tsx b/app/screens/phone-auth-screen/phone-login-input.tsx index a334f31a15..d9d3963738 100644 --- a/app/screens/phone-auth-screen/phone-login-input.tsx +++ b/app/screens/phone-auth-screen/phone-login-input.tsx @@ -132,6 +132,10 @@ export const PhoneLoginInitiateScreen: React.FC = theme: { colors, mode: themeMode }, } = useTheme() + const screenType = route.params.type + const phoneChannel = route.params.channel + const onboarding = route.params.onboarding + const { userSubmitPhoneNumber, captchaLoading, @@ -148,14 +152,10 @@ export const PhoneLoginInitiateScreen: React.FC = setCountryCode, supportedCountries, loadingSupportedCountries, - } = useRequestPhoneCodeLogin() + } = useRequestPhoneCodeLogin({ onboarding }) const { LL } = useI18nContext() - const screenType = route.params.type - const phoneChannel = route.params.channel - const onboarding = route.params.onboarding - const isDisabledCountryAndCreateAccount = screenType === PhoneLoginInitiateType.CreateAccount && phoneInputInfo?.countryCode && diff --git a/app/screens/phone-auth-screen/request-phone-code-login.ts b/app/screens/phone-auth-screen/request-phone-code-login.ts index d6333df96e..8789a7242b 100644 --- a/app/screens/phone-auth-screen/request-phone-code-login.ts +++ b/app/screens/phone-auth-screen/request-phone-code-login.ts @@ -93,7 +93,11 @@ gql` } ` -export const useRequestPhoneCodeLogin = (): UseRequestPhoneCodeReturn => { +export const useRequestPhoneCodeLogin = (opts?: { + onboarding?: boolean +}): UseRequestPhoneCodeReturn => { + const onboarding = Boolean(opts?.onboarding) + const [status, setStatus] = useState( RequestPhoneCodeStatus.LoadingCountryCode, ) @@ -192,6 +196,7 @@ export const useRequestPhoneCodeLogin = (): UseRequestPhoneCodeReturn => { validationCode: geetestValidationData.geetestValidate, secCode: geetestValidationData.geetestSecCode, channel: phoneCodeChannel, + requireUniquePhone: onboarding, } as const resetValidationData() logRequestAuthCode({ @@ -279,6 +284,7 @@ export const useRequestPhoneCodeLogin = (): UseRequestPhoneCodeReturn => { registerCaptcha, appCheckToken, authUrl, + onboarding, ]) const setPhoneNumber = (number: string) => { From 69de3e0d624ef720815e6661ad1b15e750e89b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esa=C3=BA=20G=C3=B3mez?= Date: Wed, 17 Sep 2025 13:33:16 -0600 Subject: [PATCH 2/2] feat(onboarding): validate email uniqueness and prevent upgrade when address is already registered --- .../email-registration-screen/email-registration-initiate.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/screens/email-registration-screen/email-registration-initiate.tsx b/app/screens/email-registration-screen/email-registration-initiate.tsx index 566f0ddfdd..f3cea1186a 100644 --- a/app/screens/email-registration-screen/email-registration-initiate.tsx +++ b/app/screens/email-registration-screen/email-registration-initiate.tsx @@ -102,7 +102,7 @@ export const EmailRegistrationInitiateScreen: React.FC< try { const { data } = await setEmailMutation({ - variables: { input: { email: emailInput } }, + variables: { input: { email: emailInput, requireUniqueEmail: onboarding } }, }) const errors = data?.userEmailRegistrationInitiate.errors