diff options
Diffstat (limited to 'src/screens/Signup/index.tsx')
-rw-r--r-- | src/screens/Signup/index.tsx | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/screens/Signup/index.tsx b/src/screens/Signup/index.tsx index e82d0da1c..c98040010 100644 --- a/src/screens/Signup/index.tsx +++ b/src/screens/Signup/index.tsx @@ -1,5 +1,5 @@ -import React from 'react' -import {View} from 'react-native' +import {useEffect, useReducer, useState} from 'react' +import {AppState, type AppStateStatus, View} from 'react-native' import Animated, {FadeIn, LayoutAnimationConfig} from 'react-native-reanimated' import {AppBskyGraphStarterpack} from '@atproto/api' import {msg, Trans} from '@lingui/macro' @@ -31,7 +31,7 @@ import * as bsky from '#/types/bsky' export function Signup({onPressBack}: {onPressBack: () => void}) { const {_} = useLingui() const t = useTheme() - const [state, dispatch] = React.useReducer(reducer, initialState) + const [state, dispatch] = useReducer(reducer, initialState) const {gtMobile} = useBreakpoints() const submit = useSubmitSignup() @@ -44,7 +44,7 @@ export function Signup({onPressBack}: {onPressBack: () => void}) { uri: activeStarterPack?.uri, }) - const [isFetchedAtMount] = React.useState(starterPack != null) + const [isFetchedAtMount] = useState(starterPack != null) const showStarterPackCard = activeStarterPack?.uri && !isFetchingStarterPack && starterPack @@ -55,7 +55,7 @@ export function Signup({onPressBack}: {onPressBack: () => void}) { refetch, } = useServiceQuery(state.serviceUrl) - React.useEffect(() => { + useEffect(() => { if (isFetching) { dispatch({type: 'setIsLoading', value: true}) } else if (!isFetching) { @@ -63,7 +63,7 @@ export function Signup({onPressBack}: {onPressBack: () => void}) { } }, [isFetching]) - React.useEffect(() => { + useEffect(() => { if (isError) { dispatch({type: 'setServiceDescription', value: undefined}) dispatch({ @@ -78,7 +78,7 @@ export function Signup({onPressBack}: {onPressBack: () => void}) { } }, [_, serviceInfo, isError]) - React.useEffect(() => { + useEffect(() => { if (state.pendingSubmit) { if (!state.pendingSubmit.mutableProcessed) { state.pendingSubmit.mutableProcessed = true @@ -87,6 +87,20 @@ export function Signup({onPressBack}: {onPressBack: () => void}) { } }, [state, dispatch, submit]) + // Track app backgrounding during signup + useEffect(() => { + const subscription = AppState.addEventListener( + 'change', + (nextAppState: AppStateStatus) => { + if (nextAppState === 'background') { + dispatch({type: 'incrementBackgroundCount'}) + } + }, + ) + + return () => subscription.remove() + }, []) + return ( <SignupContext.Provider value={{state, dispatch}}> <LoggedOutLayout |