From 5687fa211eb3862a1680d8e01771499417e659cc Mon Sep 17 00:00:00 2001 From: DiamondThree <857159145@qq.com> Date: Mon, 9 Jan 2023 17:51:12 +0800 Subject: [PATCH] feat: add workspace-help --- .../src/components/create-workspace/index.tsx | 16 ++++++++++------ .../app/src/hooks/use-workspace-helper.ts | 19 +++++++++++++++++++ .../providers/app-state-provider/Provider.tsx | 14 -------------- .../providers/app-state-provider/interface.ts | 1 - 4 files changed, 29 insertions(+), 21 deletions(-) create mode 100644 packages/app/src/hooks/use-workspace-helper.ts diff --git a/packages/app/src/components/create-workspace/index.tsx b/packages/app/src/components/create-workspace/index.tsx index 545eaec4c0..fbc2004568 100644 --- a/packages/app/src/components/create-workspace/index.tsx +++ b/packages/app/src/components/create-workspace/index.tsx @@ -3,10 +3,10 @@ import { Modal, ModalWrapper, ModalCloseButton } from '@/ui/modal'; import { Button } from '@/ui/button'; import { useState } from 'react'; import Input from '@/ui/input'; -import { useTemporaryHelper } from '@/providers/temporary-helper-provider'; import { KeyboardEvent } from 'react'; import { useTranslation } from 'react-i18next'; import { useAppState } from '@/providers/app-state-provider'; +import { useWorkspaceHelper } from '@/hooks/use-workspace-helper'; interface ICloseParams { workspaceId?: string; } @@ -17,11 +17,15 @@ interface ModalProps { export const CreateWorkspaceModal = ({ open, onClose }: ModalProps) => { const [workspaceName, setWorkspaceName] = useState(''); - const { createWorkspace } = useAppState(); - const handleCreateWorkspace = () => { - const workspace = createWorkspace(workspaceName); - // onClose({ workspaceId: workspace.id }); - // setActiveWorkspace(workspace); + const { createWorkspace } = useWorkspaceHelper(); + const { loadWorkspace } = useAppState(); + const handleCreateWorkspace = async () => { + const workspace = await createWorkspace(workspaceName); + if (workspace && workspace.room) { + await loadWorkspace(workspace.room); + } else { + console.log('create error'); + } }; const handleKeyDown = (event: KeyboardEvent) => { if (event.key === 'Enter') { diff --git a/packages/app/src/hooks/use-workspace-helper.ts b/packages/app/src/hooks/use-workspace-helper.ts new file mode 100644 index 0000000000..a76f029270 --- /dev/null +++ b/packages/app/src/hooks/use-workspace-helper.ts @@ -0,0 +1,19 @@ +import { useAppState } from '@/providers/app-state-provider'; + +export const useWorkspaceHelper = () => { + const { dataCenter } = useAppState(); + const createWorkspace = async (name: string) => { + const workspaceInfo = await dataCenter.createWorkspace({ + name: name, + avatar: 'cccc', + }); + if (workspaceInfo && workspaceInfo.room) { + const workspace = await dataCenter.loadWorkspace(workspaceInfo.room); + return workspace; + } + return null; + }; + return { + createWorkspace, + }; +}; diff --git a/packages/app/src/providers/app-state-provider/Provider.tsx b/packages/app/src/providers/app-state-provider/Provider.tsx index cee1ceab6a..9c65aae97c 100644 --- a/packages/app/src/providers/app-state-provider/Provider.tsx +++ b/packages/app/src/providers/app-state-provider/Provider.tsx @@ -47,7 +47,6 @@ export const AppStateProvider = ({ const currentWorkspace = await dataCenter.loadWorkspace( dataCenter.workspaces[0].id ); - console.log('currentWorkspace: ', currentWorkspace); setAppState({ dataCenter, @@ -150,18 +149,6 @@ export const AppStateProvider = ({ }); }; - const createWorkspace = async (name: string) => { - const { dataCenter } = appState; - const workspaceInfo = await dataCenter.createWorkspace({ - name: name, - avatar: 'cccc', - }); - if (workspaceInfo && workspaceInfo.room) { - const workspace = await dataCenter.loadWorkspace(workspaceInfo.room); - console.log('workspace: ', workspace); - } - }; - return ( diff --git a/packages/app/src/providers/app-state-provider/interface.ts b/packages/app/src/providers/app-state-provider/interface.ts index 978c39369d..ed8847c6bb 100644 --- a/packages/app/src/providers/app-state-provider/interface.ts +++ b/packages/app/src/providers/app-state-provider/interface.ts @@ -24,7 +24,6 @@ export type AppStateFunction = { setEditor: (page: EditorContainer) => void; loadWorkspace: (workspaceId: string) => Promise; loadPage: (pageId: string) => void; - createWorkspace: (name: string) => Promise; }; export type AppStateContext = AppStateValue & AppStateFunction;