properly close the switch account dialog (#3558)
* properly close the switch account dialog
* use it for switch account as well
* ensure dialog is closed on unmount
Revert "properly check if the ref is null"
This reverts commit 8f563808a5d39389b0bc47a31e73cd147d1e7e8b.
properly check if the ref is null
ensure dialog is closed on unmount
* Revert "ensure dialog is closed on unmount"
This reverts commit a48548fd8e.
This commit is contained in:
@@ -6,7 +6,6 @@ import {useLingui} from '@lingui/react'
|
||||
import {useAccountSwitcher} from '#/lib/hooks/useAccountSwitcher'
|
||||
import {type SessionAccount, useSession} from '#/state/session'
|
||||
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
|
||||
import {useCloseAllActiveElements} from '#/state/util'
|
||||
import {atoms as a} from '#/alf'
|
||||
import * as Dialog from '#/components/Dialog'
|
||||
import {AccountList} from '../AccountList'
|
||||
@@ -21,23 +20,25 @@ export function SwitchAccountDialog({
|
||||
const {currentAccount} = useSession()
|
||||
const {onPressSwitchAccount} = useAccountSwitcher()
|
||||
const {setShowLoggedOut} = useLoggedOutViewControls()
|
||||
const closeAllActiveElements = useCloseAllActiveElements()
|
||||
|
||||
const onSelectAccount = useCallback(
|
||||
(account: SessionAccount) => {
|
||||
if (account.did === currentAccount?.did) {
|
||||
control.close()
|
||||
if (account.did !== currentAccount?.did) {
|
||||
control.close(() => {
|
||||
onPressSwitchAccount(account, 'SwitchAccount')
|
||||
})
|
||||
} else {
|
||||
onPressSwitchAccount(account, 'SwitchAccount')
|
||||
control.close()
|
||||
}
|
||||
},
|
||||
[currentAccount, control, onPressSwitchAccount],
|
||||
)
|
||||
|
||||
const onPressAddAccount = useCallback(() => {
|
||||
setShowLoggedOut(true)
|
||||
closeAllActiveElements()
|
||||
}, [setShowLoggedOut, closeAllActiveElements])
|
||||
control.close(() => {
|
||||
setShowLoggedOut(true)
|
||||
})
|
||||
}, [setShowLoggedOut, control])
|
||||
|
||||
return (
|
||||
<Dialog.Outer control={control}>
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
import {useCallback} from 'react'
|
||||
|
||||
import {isWeb} from '#/platform/detection'
|
||||
import {useAnalytics} from '#/lib/analytics/analytics'
|
||||
import {useSessionApi, SessionAccount} from '#/state/session'
|
||||
import * as Toast from '#/view/com/util/Toast'
|
||||
import {useCloseAllActiveElements} from '#/state/util'
|
||||
import {isWeb} from '#/platform/detection'
|
||||
import {SessionAccount, useSessionApi} from '#/state/session'
|
||||
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
|
||||
import * as Toast from '#/view/com/util/Toast'
|
||||
import {LogEvents} from '../statsig/statsig'
|
||||
|
||||
export function useAccountSwitcher() {
|
||||
const {track} = useAnalytics()
|
||||
const {selectAccount, clearCurrentAccount} = useSessionApi()
|
||||
const closeAllActiveElements = useCloseAllActiveElements()
|
||||
const {requestSwitchToAccount} = useLoggedOutViewControls()
|
||||
|
||||
const onPressSwitchAccount = useCallback(
|
||||
@@ -23,7 +21,6 @@ export function useAccountSwitcher() {
|
||||
|
||||
try {
|
||||
if (account.accessJwt) {
|
||||
closeAllActiveElements()
|
||||
if (isWeb) {
|
||||
// We're switching accounts, which remounts the entire app.
|
||||
// On mobile, this gets us Home, but on the web we also need reset the URL.
|
||||
@@ -37,7 +34,6 @@ export function useAccountSwitcher() {
|
||||
Toast.show(`Signed in as @${account.handle}`)
|
||||
}, 100)
|
||||
} else {
|
||||
closeAllActiveElements()
|
||||
requestSwitchToAccount({requestedAccount: account.did})
|
||||
Toast.show(
|
||||
`Please sign in as @${account.handle}`,
|
||||
@@ -49,13 +45,7 @@ export function useAccountSwitcher() {
|
||||
clearCurrentAccount() // back user out to login
|
||||
}
|
||||
},
|
||||
[
|
||||
track,
|
||||
clearCurrentAccount,
|
||||
selectAccount,
|
||||
closeAllActiveElements,
|
||||
requestSwitchToAccount,
|
||||
],
|
||||
[track, clearCurrentAccount, selectAccount, requestSwitchToAccount],
|
||||
)
|
||||
|
||||
return {onPressSwitchAccount}
|
||||
|
||||
Reference in New Issue
Block a user