diff options
Diffstat (limited to 'src/view/com/auth/create/CreateAccount.tsx')
-rw-r--r-- | src/view/com/auth/create/CreateAccount.tsx | 71 |
1 files changed, 39 insertions, 32 deletions
diff --git a/src/view/com/auth/create/CreateAccount.tsx b/src/view/com/auth/create/CreateAccount.tsx index 5d452736a..8aefffa6d 100644 --- a/src/view/com/auth/create/CreateAccount.tsx +++ b/src/view/com/auth/create/CreateAccount.tsx @@ -13,33 +13,25 @@ import {s} from 'lib/styles' import {usePalette} from 'lib/hooks/usePalette' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useOnboardingDispatch} from '#/state/shell' -import {useSessionApi} from '#/state/session' -import {useCreateAccount, submit} from './state' +import {useCreateAccount, useSubmitCreateAccount} from './state' import {useServiceQuery} from '#/state/queries/service' -import { - usePreferencesSetBirthDateMutation, - useSetSaveFeedsMutation, - DEFAULT_PROD_FEEDS, -} from '#/state/queries/preferences' -import {FEEDBACK_FORM_URL, HITSLOP_10, IS_PROD} from '#/lib/constants' +import {FEEDBACK_FORM_URL, HITSLOP_10} from '#/lib/constants' import {Step1} from './Step1' import {Step2} from './Step2' import {Step3} from './Step3' import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' import {TextLink} from '../../util/Link' +import {getAgent} from 'state/session' +import {createFullHandle} from 'lib/strings/handles' export function CreateAccount({onPressBack}: {onPressBack: () => void}) { const {screen} = useAnalytics() const pal = usePalette('default') const {_} = useLingui() const [uiState, uiDispatch] = useCreateAccount() - const onboardingDispatch = useOnboardingDispatch() - const {createAccount} = useSessionApi() - const {mutate: setBirthDate} = usePreferencesSetBirthDateMutation() - const {mutate: setSavedFeeds} = useSetSaveFeedsMutation() const {isTabletOrDesktop} = useWebMediaQueries() + const submit = useSubmitCreateAccount(uiState, uiDispatch) React.useEffect(() => { screen('CreateAccount') @@ -84,33 +76,48 @@ export function CreateAccount({onPressBack}: {onPressBack: () => void}) { if (!uiState.canNext) { return } - if (uiState.step < 3) { - uiDispatch({type: 'next'}) - } else { + + if (uiState.step === 2) { + uiDispatch({type: 'set-processing', value: true}) try { - await submit({ - onboardingDispatch, - createAccount, - uiState, - uiDispatch, - _, + const res = await getAgent().resolveHandle({ + handle: createFullHandle(uiState.handle, uiState.userDomain), }) - setBirthDate({birthDate: uiState.birthDate}) - if (IS_PROD(uiState.serviceUrl)) { - setSavedFeeds(DEFAULT_PROD_FEEDS) + + if (res.data.did) { + uiDispatch({ + type: 'set-error', + value: _(msg`That handle is already taken.`), + }) + return } - } catch { - // dont need to handle here + } catch (e) { + // Don't need to handle + } finally { + uiDispatch({type: 'set-processing', value: false}) + } + + if (!uiState.isCaptchaRequired) { + try { + await submit() + } catch { + // dont need to handle here + } + // We don't need to go to the next page if there wasn't a captcha required + return } } + + uiDispatch({type: 'next'}) }, [ - uiState, + uiState.canNext, + uiState.step, + uiState.isCaptchaRequired, + uiState.handle, + uiState.userDomain, uiDispatch, - onboardingDispatch, - createAccount, - setBirthDate, - setSavedFeeds, _, + submit, ]) // rendering |