diff options
Diffstat (limited to 'src/view')
-rw-r--r-- | src/view/com/auth/LoggedOut.tsx | 24 | ||||
-rw-r--r-- | src/view/com/auth/login/Login.tsx | 24 |
2 files changed, 40 insertions, 8 deletions
diff --git a/src/view/com/auth/LoggedOut.tsx b/src/view/com/auth/LoggedOut.tsx index 030ae68b1..fcff4f782 100644 --- a/src/view/com/auth/LoggedOut.tsx +++ b/src/view/com/auth/LoggedOut.tsx @@ -14,6 +14,10 @@ import {useAnalytics} from 'lib/analytics/analytics' import {SplashScreen} from './SplashScreen' import {useSetMinimalShellMode} from '#/state/shell/minimal-mode' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import { + useLoggedOutView, + useLoggedOutViewControls, +} from '#/state/shell/logged-out' enum ScreenState { S_LoginOrCreateAccount, @@ -26,16 +30,27 @@ export function LoggedOut({onDismiss}: {onDismiss?: () => void}) { const pal = usePalette('default') const setMinimalShellMode = useSetMinimalShellMode() const {screen} = useAnalytics() + const {requestedAccountSwitchTo} = useLoggedOutView() const [screenState, setScreenState] = React.useState<ScreenState>( - ScreenState.S_LoginOrCreateAccount, + requestedAccountSwitchTo + ? ScreenState.S_Login + : ScreenState.S_LoginOrCreateAccount, ) const {isMobile} = useWebMediaQueries() + const {clearRequestedAccount} = useLoggedOutViewControls() React.useEffect(() => { screen('Login') setMinimalShellMode(true) }, [screen, setMinimalShellMode]) + const onPressDismiss = React.useCallback(() => { + if (onDismiss) { + onDismiss() + } + clearRequestedAccount() + }, [clearRequestedAccount, onDismiss]) + return ( <View testID="noSessionView" @@ -62,7 +77,7 @@ export function LoggedOut({onDismiss}: {onDismiss?: () => void}) { backgroundColor: pal.text.color, borderRadius: 100, }} - onPress={onDismiss}> + onPress={onPressDismiss}> <FontAwesomeIcon icon="x" size={12} @@ -83,9 +98,10 @@ export function LoggedOut({onDismiss}: {onDismiss?: () => void}) { ) : undefined} {screenState === ScreenState.S_Login ? ( <Login - onPressBack={() => + onPressBack={() => { setScreenState(ScreenState.S_LoginOrCreateAccount) - } + clearRequestedAccount() + }} /> ) : undefined} {screenState === ScreenState.S_CreateAccount ? ( diff --git a/src/view/com/auth/login/Login.tsx b/src/view/com/auth/login/Login.tsx index 67d0afdf1..bc931ac04 100644 --- a/src/view/com/auth/login/Login.tsx +++ b/src/view/com/auth/login/Login.tsx @@ -14,6 +14,7 @@ import {useLingui} from '@lingui/react' import {msg} from '@lingui/macro' import {useSession, SessionAccount} from '#/state/session' import {useServiceQuery} from '#/state/queries/service' +import {useLoggedOutView} from '#/state/shell/logged-out' enum Forms { Login, @@ -24,16 +25,31 @@ enum Forms { } export const Login = ({onPressBack}: {onPressBack: () => void}) => { + const {_} = useLingui() const pal = usePalette('default') + const {accounts} = useSession() const {track} = useAnalytics() - const {_} = useLingui() + const {requestedAccountSwitchTo} = useLoggedOutView() + const requestedAccount = accounts.find( + a => a.did === requestedAccountSwitchTo, + ) + const [error, setError] = useState<string>('') - const [serviceUrl, setServiceUrl] = useState<string>(DEFAULT_SERVICE) - const [initialHandle, setInitialHandle] = useState<string>('') + const [serviceUrl, setServiceUrl] = useState<string>( + requestedAccount?.service || DEFAULT_SERVICE, + ) + const [initialHandle, setInitialHandle] = useState<string>( + requestedAccount?.handle || '', + ) const [currentForm, setCurrentForm] = useState<Forms>( - accounts.length ? Forms.ChooseAccount : Forms.Login, + requestedAccount + ? Forms.Login + : accounts.length + ? Forms.ChooseAccount + : Forms.Login, ) + const { data: serviceDescription, error: serviceError, |