diff options
author | Eric Bailey <git@esb.lol> | 2023-11-09 17:14:51 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-09 15:14:51 -0800 |
commit | 625cbc435f15bc0d611661b44dbf8add990dff7d (patch) | |
tree | c0bdafd65783a52410c874721510f73fbc9a9828 /src/App.web.tsx | |
parent | 664e7a91a96dfea08d47162ce67adb04412696c0 (diff) | |
download | voidsky-625cbc435f15bc0d611661b44dbf8add990dff7d.tar.zst |
First pass at a session handler (#1850)
* First pass at a session handler * TODOs * Fix recursion * Couple more things * Add back resume session concept * Handle ready * Cleanup of initial loading states * Handle init failure * Cleanup * Remove account * Add updateCurrentAccount * Remove log * Cleanup * Integrate removeAccount * Add hasSession * Add to App.native, harden migration * Use effect to persist data
Diffstat (limited to 'src/App.web.tsx')
-rw-r--r-- | src/App.web.tsx | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/src/App.web.tsx b/src/App.web.tsx index ef275b392..fc76afce1 100644 --- a/src/App.web.tsx +++ b/src/App.web.tsx @@ -24,8 +24,16 @@ import {Provider as ModalStateProvider} from 'state/modals' import {Provider as MutedThreadsProvider} from 'state/muted-threads' import {Provider as InvitesStateProvider} from 'state/invites' import {Provider as PrefsStateProvider} from 'state/preferences' +import { + Provider as SessionProvider, + useSession, + useSessionApi, +} from 'state/session' +import * as persisted from '#/state/persisted' const InnerApp = observer(function AppImpl() { + const {isInitialLoad} = useSession() + const {resumeSession} = useSessionApi() const colorMode = useColorMode() const [rootStore, setRootStore] = useState<RootStoreModel | undefined>( undefined, @@ -38,10 +46,16 @@ const InnerApp = observer(function AppImpl() { analytics.init(store) }) dynamicActivate(defaultLocale) // async import of locale data - }, []) + }, [resumeSession]) + + useEffect(() => { + const account = persisted.get('session').currentAccount + resumeSession(account) + }, [resumeSession]) // show nothing prior to init - if (!rootStore) { + if (!rootStore || isInitialLoad) { + // TODO add a loading state return null } @@ -77,17 +91,19 @@ function App() { } return ( - <ShellStateProvider> - <PrefsStateProvider> - <MutedThreadsProvider> - <InvitesStateProvider> - <ModalStateProvider> - <InnerApp /> - </ModalStateProvider> - </InvitesStateProvider> - </MutedThreadsProvider> - </PrefsStateProvider> - </ShellStateProvider> + <SessionProvider> + <ShellStateProvider> + <PrefsStateProvider> + <MutedThreadsProvider> + <InvitesStateProvider> + <ModalStateProvider> + <InnerApp /> + </ModalStateProvider> + </InvitesStateProvider> + </MutedThreadsProvider> + </PrefsStateProvider> + </ShellStateProvider> + </SessionProvider> ) } |