Show the splash screen during session resumption (close #186) (#199)

This commit is contained in:
Paul Frazee
2023-02-14 16:54:47 -06:00
committed by GitHub
parent f331fb9c75
commit 9b08fb93a0
2 changed files with 24 additions and 8 deletions
+10 -1
View File
@@ -43,6 +43,10 @@ export class SessionModel {
* A listing of the currently & previous sessions
*/
accounts: AccountData[] = []
/**
* Flag to indicate if we're doing our initial-load session resumption
*/
isResumingSession = false
constructor(public rootStore: RootStoreModel) {
makeAutoObservable(this, {
@@ -114,7 +118,12 @@ export class SessionModel {
this.rootStore.log.debug(
'SessionModel:attemptSessionResumption found stored session',
)
return this.resumeSession(sess)
this.isResumingSession = true
try {
return await this.resumeSession(sess)
} finally {
this.isResumingSession = false
}
} else {
this.rootStore.log.debug(
'SessionModel:attemptSessionResumption has no session to resume',
+14 -7
View File
@@ -8,6 +8,7 @@ import {Text} from '../com/util/text/Text'
import {ErrorBoundary} from '../com/util/ErrorBoundary'
import {colors} from '../lib/styles'
import {usePalette} from '../lib/hooks/usePalette'
import {useStores} from '../../state'
import {CLOUD_SPLASH} from '../lib/assets'
import {useAnalytics} from '@segment/analytics-react-native'
@@ -59,22 +60,28 @@ const SigninOrCreateAccount = ({
export const Login = observer(() => {
const pal = usePalette('default')
const store = useStores()
const [screenState, setScreenState] = useState<ScreenState>(
ScreenState.S_SigninOrCreateAccount,
)
if (screenState === ScreenState.S_SigninOrCreateAccount) {
if (
store.session.isResumingSession ||
screenState === ScreenState.S_SigninOrCreateAccount
) {
return (
<View style={styles.container}>
<FastImage source={CLOUD_SPLASH as FISource} style={styles.bgImg} />
<SafeAreaView testID="noSessionView" style={styles.container}>
<ErrorBoundary>
<SigninOrCreateAccount
onPressSignin={() => setScreenState(ScreenState.S_Signin)}
onPressCreateAccount={() =>
setScreenState(ScreenState.S_CreateAccount)
}
/>
{!store.session.isResumingSession && (
<SigninOrCreateAccount
onPressSignin={() => setScreenState(ScreenState.S_Signin)}
onPressCreateAccount={() =>
setScreenState(ScreenState.S_CreateAccount)
}
/>
)}
</ErrorBoundary>
</SafeAreaView>
</View>