[Session] Inline session dropped toast logic
This commit is contained in:
@@ -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, _])
|
||||||
|
|||||||
@@ -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')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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']>(
|
||||||
|
|||||||
Reference in New Issue
Block a user