Skip to content

Commit 0ef479b

Browse files
Fix logout (#12399)
1 parent 76ae9a1 commit 0ef479b

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

app/gui/src/dashboard/providers/SessionProvider.tsx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,9 @@ export default function SessionProvider(props: SessionProviderProps) {
115115
const queryClient = reactQuery.useQueryClient()
116116
const toastAndLog = useToastAndLog()
117117

118-
const sessionQuery = createSessionQuery(authService)
118+
const sessionQueryOptions = createSessionQuery(authService)
119119

120-
const session = reactQuery.useSuspenseQuery(sessionQuery)
120+
const session = reactQuery.useSuspenseQuery(sessionQueryOptions)
121121

122122
const refreshUserSessionMutation = reactQuery.useMutation({
123123
mutationKey: ['refreshUserSession', { expireAt: session.data?.expireAt }],
@@ -126,12 +126,12 @@ export default function SessionProvider(props: SessionProviderProps) {
126126
if (data) {
127127
httpClient?.setSessionToken(data.accessToken)
128128
}
129-
return queryClient.invalidateQueries({ queryKey: sessionQuery.queryKey })
129+
return queryClient.invalidateQueries({ queryKey: sessionQueryOptions.queryKey })
130130
},
131131
onError: (error) => {
132132
// Something went wrong with the refresh token, so we need to sign the user out.
133133
toastAndLog('sessionExpiredError', error)
134-
queryClient.setQueryData(sessionQuery.queryKey, null)
134+
queryClient.setQueryData(sessionQueryOptions.queryKey, null)
135135
return logoutMutation.mutateAsync()
136136
},
137137
})
@@ -162,6 +162,7 @@ export default function SessionProvider(props: SessionProviderProps) {
162162
void queryClient.clearWithPersister()
163163
},
164164
onError: () => toast.error(getText('signOutError')),
165+
meta: { invalidates: [sessionQueryOptions.queryKey], awaitInvalidates: true },
165166
})
166167

167168
const signUp = useEventCallback(
@@ -209,7 +210,7 @@ export default function SessionProvider(props: SessionProviderProps) {
209210
}
210211

211212
return queryClient
212-
.invalidateQueries({ queryKey: sessionQuery.queryKey })
213+
.invalidateQueries({ queryKey: sessionQueryOptions.queryKey })
213214
.then(() => ({ challenge, user }) as const)
214215
} else {
215216
throw new Error(result.val.message)
@@ -282,7 +283,7 @@ export default function SessionProvider(props: SessionProviderProps) {
282283
switch (event) {
283284
case listen.AuthEvent.signIn:
284285
case listen.AuthEvent.signOut: {
285-
void queryClient.invalidateQueries({ queryKey: sessionQuery.queryKey })
286+
void queryClient.invalidateQueries({ queryKey: sessionQueryOptions.queryKey })
286287
break
287288
}
288289
case listen.AuthEvent.customOAuthState:
@@ -293,15 +294,15 @@ export default function SessionProvider(props: SessionProviderProps) {
293294
// will not work.
294295
// See https://github.com/aws-amplify/amplify-js/issues/3391#issuecomment-756473970
295296
history.replaceState({}, '', mainPageUrl)
296-
void queryClient.invalidateQueries({ queryKey: sessionQuery.queryKey })
297+
void queryClient.invalidateQueries({ queryKey: sessionQueryOptions.queryKey })
297298
break
298299
}
299300
default: {
300301
throw new errorModule.UnreachableCaseError(event)
301302
}
302303
}
303304
}),
304-
[registerAuthEventListener, mainPageUrl, queryClient, sessionQuery.queryKey],
305+
[registerAuthEventListener, mainPageUrl, queryClient, sessionQueryOptions.queryKey],
305306
)
306307

307308
const organizationId = useEventCallback(() => authService.organizationId())

0 commit comments

Comments
 (0)