Instrument signup (#8037)

This commit is contained in:
Samuel Newman
2025-03-27 20:17:07 +02:00
committed by GitHub
parent 7d1ebf6a02
commit 5ceaee5793
8 changed files with 182 additions and 57 deletions
+21 -7
View File
@@ -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