import React from 'react' import {View} from 'react-native' import {useSafeAreaInsets} from 'react-native-safe-area-context' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {PressableScale} from '#/lib/custom-animations/PressableScale' import {logEvent} from '#/lib/statsig/statsig' import { useLoggedOutView, useLoggedOutViewControls, } from '#/state/shell/logged-out' import {useSetMinimalShellMode} from '#/state/shell/minimal-mode' import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' import {Login} from '#/screens/Login' import {Signup} from '#/screens/Signup' import {LandingScreen} from '#/screens/StarterPack/StarterPackLandingScreen' import {atoms as a, native, tokens, useTheme} from '#/alf' import {Button, ButtonIcon} from '#/components/Button' import {TimesLarge_Stroke2_Corner0_Rounded as XIcon} from '#/components/icons/Times' import {SplashScreen} from './SplashScreen' enum ScreenState { S_LoginOrCreateAccount, S_Login, S_CreateAccount, S_StarterPack, } export {ScreenState as LoggedOutScreenState} export function LoggedOut({onDismiss}: {onDismiss?: () => void}) { const {_} = useLingui() const t = useTheme() const insets = useSafeAreaInsets() const setMinimalShellMode = useSetMinimalShellMode() const {requestedAccountSwitchTo} = useLoggedOutView() const [screenState, setScreenState] = React.useState(() => { if (requestedAccountSwitchTo === 'new') { return ScreenState.S_CreateAccount } else if (requestedAccountSwitchTo === 'starterpack') { return ScreenState.S_StarterPack } else if (requestedAccountSwitchTo != null) { return ScreenState.S_Login } else { return ScreenState.S_LoginOrCreateAccount } }) const {clearRequestedAccount} = useLoggedOutViewControls() React.useEffect(() => { setMinimalShellMode(true) }, [setMinimalShellMode]) const onPressDismiss = React.useCallback(() => { if (onDismiss) { onDismiss() } clearRequestedAccount() }, [clearRequestedAccount, onDismiss]) return ( {onDismiss && screenState === ScreenState.S_LoginOrCreateAccount ? ( ) : null} {screenState === ScreenState.S_StarterPack ? ( ) : screenState === ScreenState.S_LoginOrCreateAccount ? ( { setScreenState(ScreenState.S_Login) logEvent('splash:signInPressed', {}) }} onPressCreateAccount={() => { setScreenState(ScreenState.S_CreateAccount) logEvent('splash:createAccountPressed', {}) }} /> ) : undefined} {screenState === ScreenState.S_Login ? ( { setScreenState(ScreenState.S_LoginOrCreateAccount) clearRequestedAccount() }} /> ) : undefined} {screenState === ScreenState.S_CreateAccount ? ( setScreenState(ScreenState.S_LoginOrCreateAccount) } /> ) : undefined} ) }