diff --git a/packages/app/src/components/workspace-modal/index.tsx b/packages/app/src/components/workspace-modal/index.tsx index 08372b52ba..5380f71fc0 100644 --- a/packages/app/src/components/workspace-modal/index.tsx +++ b/packages/app/src/components/workspace-modal/index.tsx @@ -10,12 +10,10 @@ import { UsersIcon, AddIcon, } from '@blocksuite/icons'; -// import { useConfirm } from '@/providers/ConfirmProvider'; import { toast } from '@/ui/toast'; import { WorkspaceAvatar } from '@/components/workspace-avatar'; import { useAppState } from '@/providers/app-state-provider'; import { useRouter } from 'next/router'; -import { useUserHelper } from '@/hooks/use-user-helper'; interface WorkspaceModalProps { open: boolean; @@ -25,8 +23,7 @@ interface WorkspaceModalProps { export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => { const [createWorkspaceOpen, setCreateWorkspaceOpen] = useState(false); // const { confirm } = useConfirm(); - const { workspaceList, currentWorkspace } = useAppState(); - const { login, user } = useUserHelper(); + const { workspaceList, currentWorkspace, login, user } = useAppState(); const router = useRouter(); return (
diff --git a/packages/app/src/components/workspace-setting/SyncPage.tsx b/packages/app/src/components/workspace-setting/SyncPage.tsx index fb0dc5aabc..afd19b700f 100644 --- a/packages/app/src/components/workspace-setting/SyncPage.tsx +++ b/packages/app/src/components/workspace-setting/SyncPage.tsx @@ -11,14 +11,12 @@ import { useWorkspaceHelper } from '@/hooks/use-workspace-helper'; import { useAppState } from '@/providers/app-state-provider'; import { useConfirm } from '@/providers/ConfirmProvider'; import { toast } from '@/ui/toast'; -import { useUserHelper } from '@/hooks/use-user-helper'; import { useRouter } from 'next/router'; export const SyncPage = ({ workspace }: { workspace: WorkspaceInfo }) => { // console.log('workspace: ', workspace); const { enableWorkspace } = useWorkspaceHelper(); - const { currentWorkspace } = useAppState(); + const { currentWorkspace, user } = useAppState(); const { confirm } = useConfirm(); - const { user, login } = useUserHelper(); const router = useRouter(); return (
diff --git a/packages/app/src/hooks/use-user-helper.ts b/packages/app/src/hooks/use-user-helper.ts deleted file mode 100644 index 7d837cec55..0000000000 --- a/packages/app/src/hooks/use-user-helper.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { useAppState } from '@/providers/app-state-provider'; -import { User } from '@affine/datacenter'; -import { useEffect, useState } from 'react'; - -export const useUserHelper = () => { - const { dataCenter } = useAppState(); - const [user, setUser] = useState(undefined); - useEffect(() => { - dataCenter - .getUserInfo() - .then(user => { - setUser(user); - }) - .catch(e => { - setUser(undefined); - }); - }, []); - - const login = async () => { - await dataCenter.login(); - const user = await dataCenter.getUserInfo(); - setUser(user); - }; - return { - user, - login, - }; -}; diff --git a/packages/app/src/providers/app-state-provider/Provider.tsx b/packages/app/src/providers/app-state-provider/Provider.tsx index 33f650d024..9c0ebdda54 100644 --- a/packages/app/src/providers/app-state-provider/Provider.tsx +++ b/packages/app/src/providers/app-state-provider/Provider.tsx @@ -8,7 +8,7 @@ import { PageMeta, } from './interface'; import { createDefaultWorkspace } from './utils'; -import { WorkspaceInfo } from '@affine/datacenter'; +import { WorkspaceInfo, User } from '@affine/datacenter'; type AppStateContextProps = PropsWithChildren>; @@ -127,6 +127,26 @@ export const AppStateProvider = ({ }); }; + const login = async () => { + const { dataCenter } = appState; + await dataCenter.login(); + const user = (await dataCenter.getUserInfo()) as User; + setAppState({ + ...appState, + user, + }); + return user; + }; + + const logout = async () => { + const { dataCenter } = appState; + await dataCenter.logout(); + setAppState({ + ...appState, + user: null, + }); + }; + return ( {children} diff --git a/packages/app/src/providers/app-state-provider/interface.ts b/packages/app/src/providers/app-state-provider/interface.ts index ca178781f5..de1577af75 100644 --- a/packages/app/src/providers/app-state-provider/interface.ts +++ b/packages/app/src/providers/app-state-provider/interface.ts @@ -33,6 +33,9 @@ export type AppStateFunction = { loadWorkspace: (workspaceId: string) => Promise; loadPage: (pageId: string) => void; + + login: () => Promise; + logout: () => Promise; }; export type AppStateContext = AppStateValue & AppStateFunction;