[Session] Inline session dropped toast logic

This commit is contained in:
Dan Abramov
2024-05-01 23:43:06 +01:00
parent 5148b957b7
commit e3f1991571
3 changed files with 6 additions and 18 deletions
-7
View File
@@ -11,7 +11,6 @@ import {
SafeAreaProvider, SafeAreaProvider,
} from 'react-native-safe-area-context' } from 'react-native-safe-area-context'
import * as SplashScreen from 'expo-splash-screen' import * as SplashScreen from 'expo-splash-screen'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
@@ -41,14 +40,12 @@ import {Provider as ShellStateProvider} from 'state/shell'
import {Provider as LoggedOutViewProvider} from 'state/shell/logged-out' import {Provider as LoggedOutViewProvider} from 'state/shell/logged-out'
import {Provider as SelectedFeedProvider} from 'state/shell/selected-feed' import {Provider as SelectedFeedProvider} from 'state/shell/selected-feed'
import {TestCtrls} from 'view/com/testing/TestCtrls' import {TestCtrls} from 'view/com/testing/TestCtrls'
import * as Toast from 'view/com/util/Toast'
import {Shell} from 'view/shell' import {Shell} from 'view/shell'
import {ThemeProvider as Alf} from '#/alf' import {ThemeProvider as Alf} from '#/alf'
import {useColorModeTheme} from '#/alf/util/useColorModeTheme' import {useColorModeTheme} from '#/alf/util/useColorModeTheme'
import {Provider as PortalProvider} from '#/components/Portal' import {Provider as PortalProvider} from '#/components/Portal'
import {Splash} from '#/Splash' import {Splash} from '#/Splash'
import I18nProvider from './locale/i18nProvider' import I18nProvider from './locale/i18nProvider'
import {listenSessionDropped} from './state/events'
SplashScreen.preventAutoHideAsync() SplashScreen.preventAutoHideAsync()
@@ -62,10 +59,6 @@ function InnerApp() {
// init // init
useEffect(() => { useEffect(() => {
listenSessionDropped(() => {
Toast.show(_(msg`Sorry! Your session expired. Please log in again.`))
})
const account = readLastActiveAccount() const account = readLastActiveAccount()
resumeSession(account) resumeSession(account)
}, [resumeSession, _]) }, [resumeSession, _])
-8
View File
@@ -14,14 +14,6 @@ export function listenSoftReset(fn: () => void): UnlistenFn {
return () => emitter.off('soft-reset', fn) return () => emitter.off('soft-reset', fn)
} }
export function emitSessionDropped() {
emitter.emit('session-dropped')
}
export function listenSessionDropped(fn: () => void): UnlistenFn {
emitter.on('session-dropped', fn)
return () => emitter.off('session-dropped', fn)
}
export function emitPostCreated() { export function emitPostCreated() {
emitter.emit('post-created') emitter.emit('post-created')
} }
+6 -3
View File
@@ -1,5 +1,7 @@
import React from 'react' import React from 'react'
import {AtpPersistSessionHandler, BskyAgent} from '@atproto/api' import {AtpPersistSessionHandler, BskyAgent} from '@atproto/api'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {track} from '#/lib/analytics/analytics' import {track} from '#/lib/analytics/analytics'
import {networkRetry} from '#/lib/async/retry' import {networkRetry} from '#/lib/async/retry'
@@ -9,9 +11,9 @@ import {logger} from '#/logger'
import {isWeb} from '#/platform/detection' import {isWeb} from '#/platform/detection'
import * as persisted from '#/state/persisted' import * as persisted from '#/state/persisted'
import {useCloseAllActiveElements} from '#/state/util' import {useCloseAllActiveElements} from '#/state/util'
import * as Toast from 'view/com/util/Toast'
import {useGlobalDialogsControlContext} from '#/components/dialogs/Context' import {useGlobalDialogsControlContext} from '#/components/dialogs/Context'
import {IS_DEV} from '#/env' import {IS_DEV} from '#/env'
import {emitSessionDropped} from '../events'
import { import {
agentToSessionAccount, agentToSessionAccount,
configureModerationForAccount, configureModerationForAccount,
@@ -67,6 +69,7 @@ type State = {
} }
export function Provider({children}: React.PropsWithChildren<{}>) { export function Provider({children}: React.PropsWithChildren<{}>) {
const {_} = useLingui()
const [isInitialLoad, setIsInitialLoad] = React.useState(true) const [isInitialLoad, setIsInitialLoad] = React.useState(true)
const [isSwitchingAccounts, setIsSwitchingAccounts] = React.useState(false) const [isSwitchingAccounts, setIsSwitchingAccounts] = React.useState(false)
const [state, setState] = React.useState<State>({ const [state, setState] = React.useState<State>({
@@ -150,7 +153,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
if (expired) { if (expired) {
logger.warn(`session: expired`) logger.warn(`session: expired`)
emitSessionDropped() Toast.show(_(msg`Sorry! Your session expired. Please log in again.`))
} }
/* /*
@@ -169,7 +172,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
}) })
} }
}, },
[], [_],
) )
const createAccount = React.useCallback<SessionApiContext['createAccount']>( const createAccount = React.useCallback<SessionApiContext['createAccount']>(