diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-03-02 12:42:52 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-02 12:42:52 -0600 |
commit | 06e09facfea0dbba0410a01dbd4ecb46328fd464 (patch) | |
tree | beaa812919d04674008e9b0d18a1577f025de993 /src | |
parent | bd9386d81c258d3d3f43666d3e25328f68428689 (diff) | |
download | voidsky-06e09facfea0dbba0410a01dbd4ecb46328fd464.tar.zst |
Diffstat (limited to 'src')
-rw-r--r-- | src/view/com/login/CreateAccount.tsx | 60 |
1 files changed, 41 insertions, 19 deletions
diff --git a/src/view/com/login/CreateAccount.tsx b/src/view/com/login/CreateAccount.tsx index f04e1d012..3c09a6cc2 100644 --- a/src/view/com/login/CreateAccount.tsx +++ b/src/view/com/login/CreateAccount.tsx @@ -1,4 +1,4 @@ -import React, {useState, useEffect} from 'react' +import React from 'react' import { ActivityIndicator, Keyboard, @@ -33,25 +33,27 @@ export const CreateAccount = ({onPressBack}: {onPressBack: () => void}) => { const {track, screen, identify} = useAnalytics() const pal = usePalette('default') const store = useStores() - const [isProcessing, setIsProcessing] = useState<boolean>(false) - const [serviceUrl, setServiceUrl] = useState<string>(DEFAULT_SERVICE) - const [error, setError] = useState<string>('') - const [retryDescribeTrigger, setRetryDescribeTrigger] = useState<any>({}) - const [serviceDescription, setServiceDescription] = useState< + const [isProcessing, setIsProcessing] = React.useState<boolean>(false) + const [serviceUrl, setServiceUrl] = React.useState<string>(DEFAULT_SERVICE) + const [error, setError] = React.useState<string>('') + const [retryDescribeTrigger, setRetryDescribeTrigger] = React.useState<any>( + {}, + ) + const [serviceDescription, setServiceDescription] = React.useState< ServiceDescription | undefined >(undefined) - const [userDomain, setUserDomain] = useState<string>('') - const [inviteCode, setInviteCode] = useState<string>('') - const [email, setEmail] = useState<string>('') - const [password, setPassword] = useState<string>('') - const [handle, setHandle] = useState<string>('') - const [is13, setIs13] = useState<boolean>(false) + const [userDomain, setUserDomain] = React.useState<string>('') + const [inviteCode, setInviteCode] = React.useState<string>('') + const [email, setEmail] = React.useState<string>('') + const [password, setPassword] = React.useState<string>('') + const [handle, setHandle] = React.useState<string>('') + const [is13, setIs13] = React.useState<boolean>(false) - useEffect(() => { + React.useEffect(() => { screen('CreateAccount') }, [screen]) - useEffect(() => { + React.useEffect(() => { let aborted = false setError('') setServiceDescription(undefined) @@ -81,18 +83,25 @@ export const CreateAccount = ({onPressBack}: {onPressBack: () => void}) => { } }, [serviceUrl, store.session, store.log, retryDescribeTrigger]) - const onPressRetryConnect = () => setRetryDescribeTrigger({}) + const onPressRetryConnect = React.useCallback( + () => setRetryDescribeTrigger({}), + [setRetryDescribeTrigger], + ) - const onPressSelectService = () => { + const onPressSelectService = React.useCallback(() => { store.shell.openModal({ name: 'server-input', initialService: serviceUrl, onSelect: setServiceUrl, }) Keyboard.dismiss() - } + }, [store, serviceUrl]) - const onPressNext = async () => { + const onBlurInviteCode = React.useCallback(() => { + setInviteCode(inviteCode.trim()) + }, [setInviteCode, inviteCode]) + + const onPressNext = React.useCallback(async () => { if (!email) { return setError('Please enter your email.') } @@ -130,7 +139,19 @@ export const CreateAccount = ({onPressBack}: {onPressBack: () => void}) => { setIsProcessing(false) setError(cleanError(errMsg)) } - } + }, [ + serviceUrl, + userDomain, + inviteCode, + email, + password, + handle, + setError, + setIsProcessing, + store, + track, + identify, + ]) const isReady = !!email && !!password && !!handle && is13 return ( @@ -201,6 +222,7 @@ export const CreateAccount = ({onPressBack}: {onPressBack: () => void}) => { autoFocus value={inviteCode} onChangeText={setInviteCode} + onBlur={onBlurInviteCode} editable={!isProcessing} /> </View> |