From 605a5abee877d45b8dfbc2d1e84eb8b9d53f19c2 Mon Sep 17 00:00:00 2001 From: CatsJuice Date: Fri, 29 Mar 2024 03:25:12 +0000 Subject: [PATCH] fix(core): user info should be updated when session reloaded (#6382) --- .../core/src/hooks/affine/use-current-user.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/frontend/core/src/hooks/affine/use-current-user.ts b/packages/frontend/core/src/hooks/affine/use-current-user.ts index 6ec51fa8d..8b64c05e8 100644 --- a/packages/frontend/core/src/hooks/affine/use-current-user.ts +++ b/packages/frontend/core/src/hooks/affine/use-current-user.ts @@ -1,6 +1,6 @@ import { DebugLogger } from '@affine/debug'; import { getBaseUrl } from '@affine/graphql'; -import { useMemo, useReducer } from 'react'; +import { useEffect, useMemo, useReducer } from 'react'; import useSWR from 'swr'; import { SessionFetchErrorRightAfterLoginOrSignUp } from '../../unexpected-application-state/errors'; @@ -145,6 +145,21 @@ export function useCurrentUser(): CheckedUser { [dispatcher, session] ); + // update user when session reloaded + // maybe lift user state up to global state? + useEffect(() => { + if (session.user) { + dispatcher({ type: 'update', payload: session.user }); + } else { + dispatcher({ type: 'fetchError', payload: null }); + } + }, [ + session.user, + session.user?.id, + session.user?.name, + session.user?.avatarUrl, + ]); + return useMemo( () => ({ ...user,