diff options
author | dan <dan.abramov@gmail.com> | 2024-05-02 18:17:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-02 18:17:53 +0100 |
commit | 5ec945b7625a8daff3baaf76826c2f9e3c12e279 (patch) | |
tree | 0de1fcb4a7350410ef7f82760707ab4422d92021 /src/App.web.tsx | |
parent | dadf27fd2f417584093fb344cdacd9dbe332dade (diff) | |
download | voidsky-5ec945b7625a8daff3baaf76826c2f9e3c12e279.tar.zst |
[Session] Extract resumeSession out (#3811)
Diffstat (limited to 'src/App.web.tsx')
-rw-r--r-- | src/App.web.tsx | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/App.web.tsx b/src/App.web.tsx index bc9cd01f1..cf28421c9 100644 --- a/src/App.web.tsx +++ b/src/App.web.tsx @@ -6,6 +6,7 @@ import {RootSiblingParent} from 'react-native-root-siblings' import {SafeAreaProvider} from 'react-native-safe-area-context' import {Provider as StatsigProvider} from '#/lib/statsig/statsig' +import {logger} from '#/logger' import {init as initPersistedState} from '#/state/persisted' import {Provider as LabelDefsProvider} from '#/state/preferences/label-defs' import {Provider as ModerationOptsProvider} from '#/state/preferences/moderation-opts' @@ -22,6 +23,7 @@ import {Provider as PrefsStateProvider} from 'state/preferences' import {Provider as UnreadNotifsProvider} from 'state/queries/notifications/unread' import { Provider as SessionProvider, + SessionAccount, useSession, useSessionApi, } from 'state/session' @@ -36,19 +38,31 @@ import {Provider as PortalProvider} from '#/components/Portal' import I18nProvider from './locale/i18nProvider' function InnerApp() { - const {isInitialLoad, currentAccount} = useSession() - const {resumeSession} = useSessionApi() + const [isReady, setIsReady] = React.useState(false) + const {currentAccount} = useSession() + const {initSession} = useSessionApi() const theme = useColorModeTheme() useIntentHandler() // init useEffect(() => { + async function resumeSession(account?: SessionAccount) { + try { + if (account) { + await initSession(account) + } + } catch (e) { + logger.error(`session: resumeSession failed`, {message: e}) + } finally { + setIsReady(true) + } + } const account = readLastActiveAccount() resumeSession(account) - }, [resumeSession]) + }, [initSession]) // wait for session to resume - if (isInitialLoad) return null + if (!isReady) return null return ( <Alf theme={theme}> |