Modified code so that the user is signed out of a selected account rather than all accounts.
Feature Request: https://github.com/bluesky-social/social-app/issues/4775 Bug: https://github.com/bluesky-social/social-app/issues/4683
This commit is contained in:
@@ -120,6 +120,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||||||
cancelPendingTask()
|
cancelPendingTask()
|
||||||
dispatch({
|
dispatch({
|
||||||
type: 'logged-out',
|
type: 'logged-out',
|
||||||
|
accountDid: account.did,
|
||||||
})
|
})
|
||||||
logEvent('account:loggedOut', {logContext})
|
logEvent('account:loggedOut', {logContext})
|
||||||
addSessionDebugLog({type: 'method:end', method: 'logout'})
|
addSessionDebugLog({type: 'method:end', method: 'logout'})
|
||||||
|
|||||||
@@ -143,12 +143,20 @@ let reducer = (state: State, action: Action): State => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 'logged-out': {
|
case 'logged-out': {
|
||||||
|
//Fetch the account ID that the user signed out from
|
||||||
|
const {accountDid} = action
|
||||||
|
|
||||||
|
//Find the account for which the tokens need to be cleared
|
||||||
|
const loggedOutAccount = state.accounts.filter(a => a.did === accountDid)
|
||||||
|
|
||||||
|
//Clear the tokens for the account that the user signed out from
|
||||||
|
loggedOutAccount.accessJwt = undefined
|
||||||
|
loggedOutAccount.refreshJwt = undefined
|
||||||
|
|
||||||
return {
|
return {
|
||||||
accounts: state.accounts.map(a => ({
|
//Return all the accounts. The other accounts remain unchanged, so the user will
|
||||||
...a,
|
//stay signed in on them.
|
||||||
// Clear tokens for *every* account (this is a hard logout).
|
accounts: state.accounts
|
||||||
refreshJwt: undefined,
|
|
||||||
accessJwt: undefined,
|
|
||||||
})),
|
})),
|
||||||
currentAgentState: createPublicAgentState(),
|
currentAgentState: createPublicAgentState(),
|
||||||
needsPersist: true,
|
needsPersist: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user