Ensure captcha verification code gets submitted in signup request (#5010)

Co-authored-by: Eric Bailey <git@esb.lol>
zio/stable
Hailey 2024-08-28 11:56:04 -07:00 committed by GitHub
parent 94d2180aaa
commit 16d556c3c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 9 additions and 13 deletions

View File

@ -41,10 +41,9 @@ export function StepCaptcha() {
(code: string) => {
setCompleted(true)
logEvent('signup:captchaSuccess', {})
const submitTask = {code, mutableProcessed: false}
dispatch({
type: 'submit',
task: submitTask,
task: {verificationCode: code, mutableProcessed: false},
})
},
[dispatch],

View File

@ -65,8 +65,10 @@ export function StepHandle() {
})
// phoneVerificationRequired is actually whether a captcha is required
if (!state.serviceDescription?.phoneVerificationRequired) {
const submitTask = {code: undefined, mutableProcessed: false}
dispatch({type: 'submit', task: submitTask})
dispatch({
type: 'submit',
task: {verificationCode: undefined, mutableProcessed: false},
})
return
}
dispatch({type: 'next'})

View File

@ -27,7 +27,7 @@ export enum SignupStep {
}
type SubmitTask = {
code: string | undefined
verificationCode: string | undefined
mutableProcessed: boolean // OK to mutate assuming it's never read in render.
}
@ -62,7 +62,6 @@ export type SignupAction =
| {type: 'setDateOfBirth'; value: Date}
| {type: 'setInviteCode'; value: string}
| {type: 'setHandle'; value: string}
| {type: 'setVerificationCode'; value: string}
| {type: 'setError'; value: string}
| {type: 'setIsLoading'; value: boolean}
| {type: 'submit'; task: SubmitTask}
@ -189,11 +188,7 @@ export function useSubmitSignup() {
const onboardingDispatch = useOnboardingDispatch()
return useCallback(
async (
state: SignupState,
dispatch: (action: SignupAction) => void,
verificationCode?: string,
) => {
async (state: SignupState, dispatch: (action: SignupAction) => void) => {
if (!state.email) {
dispatch({type: 'setStep', value: SignupStep.INFO})
return dispatch({
@ -224,7 +219,7 @@ export function useSubmitSignup() {
}
if (
state.serviceDescription?.phoneVerificationRequired &&
!verificationCode
!state.pendingSubmit?.verificationCode
) {
dispatch({type: 'setStep', value: SignupStep.CAPTCHA})
logger.error('Signup Flow Error', {
@ -247,7 +242,7 @@ export function useSubmitSignup() {
password: state.password,
birthDate: state.dateOfBirth,
inviteCode: state.inviteCode.trim(),
verificationCode: verificationCode,
verificationCode: state.pendingSubmit?.verificationCode,
})
/*
* Must happen last so that if the user has multiple tabs open and