Trim whitespace from the invite code (close #245) (#247)

This commit is contained in:
Paul Frazee 2023-03-02 12:42:52 -06:00 committed by GitHub
parent bd9386d81c
commit 06e09facfe

View file

@ -1,4 +1,4 @@
import React, {useState, useEffect} from 'react' import React from 'react'
import { import {
ActivityIndicator, ActivityIndicator,
Keyboard, Keyboard,
@ -33,25 +33,27 @@ export const CreateAccount = ({onPressBack}: {onPressBack: () => void}) => {
const {track, screen, identify} = useAnalytics() const {track, screen, identify} = useAnalytics()
const pal = usePalette('default') const pal = usePalette('default')
const store = useStores() const store = useStores()
const [isProcessing, setIsProcessing] = useState<boolean>(false) const [isProcessing, setIsProcessing] = React.useState<boolean>(false)
const [serviceUrl, setServiceUrl] = useState<string>(DEFAULT_SERVICE) const [serviceUrl, setServiceUrl] = React.useState<string>(DEFAULT_SERVICE)
const [error, setError] = useState<string>('') const [error, setError] = React.useState<string>('')
const [retryDescribeTrigger, setRetryDescribeTrigger] = useState<any>({}) const [retryDescribeTrigger, setRetryDescribeTrigger] = React.useState<any>(
const [serviceDescription, setServiceDescription] = useState< {},
)
const [serviceDescription, setServiceDescription] = React.useState<
ServiceDescription | undefined ServiceDescription | undefined
>(undefined) >(undefined)
const [userDomain, setUserDomain] = useState<string>('') const [userDomain, setUserDomain] = React.useState<string>('')
const [inviteCode, setInviteCode] = useState<string>('') const [inviteCode, setInviteCode] = React.useState<string>('')
const [email, setEmail] = useState<string>('') const [email, setEmail] = React.useState<string>('')
const [password, setPassword] = useState<string>('') const [password, setPassword] = React.useState<string>('')
const [handle, setHandle] = useState<string>('') const [handle, setHandle] = React.useState<string>('')
const [is13, setIs13] = useState<boolean>(false) const [is13, setIs13] = React.useState<boolean>(false)
useEffect(() => { React.useEffect(() => {
screen('CreateAccount') screen('CreateAccount')
}, [screen]) }, [screen])
useEffect(() => { React.useEffect(() => {
let aborted = false let aborted = false
setError('') setError('')
setServiceDescription(undefined) setServiceDescription(undefined)
@ -81,18 +83,25 @@ export const CreateAccount = ({onPressBack}: {onPressBack: () => void}) => {
} }
}, [serviceUrl, store.session, store.log, retryDescribeTrigger]) }, [serviceUrl, store.session, store.log, retryDescribeTrigger])
const onPressRetryConnect = () => setRetryDescribeTrigger({}) const onPressRetryConnect = React.useCallback(
() => setRetryDescribeTrigger({}),
[setRetryDescribeTrigger],
)
const onPressSelectService = () => { const onPressSelectService = React.useCallback(() => {
store.shell.openModal({ store.shell.openModal({
name: 'server-input', name: 'server-input',
initialService: serviceUrl, initialService: serviceUrl,
onSelect: setServiceUrl, onSelect: setServiceUrl,
}) })
Keyboard.dismiss() Keyboard.dismiss()
} }, [store, serviceUrl])
const onPressNext = async () => { const onBlurInviteCode = React.useCallback(() => {
setInviteCode(inviteCode.trim())
}, [setInviteCode, inviteCode])
const onPressNext = React.useCallback(async () => {
if (!email) { if (!email) {
return setError('Please enter your email.') return setError('Please enter your email.')
} }
@ -130,7 +139,19 @@ export const CreateAccount = ({onPressBack}: {onPressBack: () => void}) => {
setIsProcessing(false) setIsProcessing(false)
setError(cleanError(errMsg)) setError(cleanError(errMsg))
} }
} }, [
serviceUrl,
userDomain,
inviteCode,
email,
password,
handle,
setError,
setIsProcessing,
store,
track,
identify,
])
const isReady = !!email && !!password && !!handle && is13 const isReady = !!email && !!password && !!handle && is13
return ( return (
@ -201,6 +222,7 @@ export const CreateAccount = ({onPressBack}: {onPressBack: () => void}) => {
autoFocus autoFocus
value={inviteCode} value={inviteCode}
onChangeText={setInviteCode} onChangeText={setInviteCode}
onBlur={onBlurInviteCode}
editable={!isProcessing} editable={!isProcessing}
/> />
</View> </View>