From ef4a25d82b0796d0b2faf1a345057cf7a99cfb97 Mon Sep 17 00:00:00 2001 From: alt0 Date: Tue, 7 Feb 2023 22:46:40 +0800 Subject: [PATCH] fix: workspace router --- .../workspace-setting/general/delete/Delete.tsx | 3 +++ packages/app/src/hooks/use-ensure-workspace.ts | 12 ++++++------ .../src/providers/app-state-provider/Provider.tsx | 1 - 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/app/src/components/workspace-setting/general/delete/Delete.tsx b/packages/app/src/components/workspace-setting/general/delete/Delete.tsx index d8b0858de..af2570f81 100644 --- a/packages/app/src/components/workspace-setting/general/delete/Delete.tsx +++ b/packages/app/src/components/workspace-setting/general/delete/Delete.tsx @@ -1,3 +1,4 @@ +import { useRouter } from 'next/router'; import Modal from '@/ui/modal'; import Input from '@/ui/input'; import { @@ -29,6 +30,7 @@ export const WorkspaceDelete = ({ }: WorkspaceDeleteProps) => { const [deleteStr, setDeleteStr] = useState(''); const { t } = useTranslation(); + const router = useRouter(); const { deleteWorkSpace } = useWorkspaceHelper(); const handlerInputChange = (workspaceName: string) => { setDeleteStr(workspaceName); @@ -37,6 +39,7 @@ export const WorkspaceDelete = ({ const handleDelete = async () => { await deleteWorkSpace(); onClose(); + router.push(`/workspace`); }; return ( diff --git a/packages/app/src/hooks/use-ensure-workspace.ts b/packages/app/src/hooks/use-ensure-workspace.ts index 57d4abf9a..d547b09da 100644 --- a/packages/app/src/hooks/use-ensure-workspace.ts +++ b/packages/app/src/hooks/use-ensure-workspace.ts @@ -5,7 +5,7 @@ import { useRouter } from 'next/router'; // Cause it not just ensure workspace loaded, but also have router change. export const useEnsureWorkspace = () => { const [workspaceLoaded, setWorkspaceLoaded] = useState(false); - const { dataCenter, loadWorkspace } = useAppState(); + const { workspaceList, loadWorkspace, user } = useAppState(); const router = useRouter(); const [activeWorkspaceId, setActiveWorkspaceId] = useState( router.query.workspaceId as string @@ -17,14 +17,14 @@ export const useEnsureWorkspace = () => { // If router.query.workspaceId is not in workspace list, jump to 404 page // If workspaceList is empty, we need to create a default workspace but not jump to 404 if ( - dataCenter.workspaces.length && + workspaceList.length && // FIXME: router is not ready when this hook is called location.pathname.startsWith(`/workspace/${router.query.workspaceId}`) && - dataCenter.workspaces.findIndex( + workspaceList.findIndex( meta => meta.id.toString() === router.query.workspaceId ) === -1 ) { - router.push(`/404`); + router.push('/404'); return; } // If user is not login and input a custom workspaceId, jump to 404 page @@ -37,12 +37,12 @@ export const useEnsureWorkspace = () => { // return; // } const workspaceId = - (router.query.workspaceId as string) || dataCenter.workspaces[0]?.id; + (router.query.workspaceId as string) || workspaceList[0]?.id; loadWorkspace.current(workspaceId).finally(() => { setWorkspaceLoaded(true); setActiveWorkspaceId(activeWorkspaceId); }); - }, [loadWorkspace, router, dataCenter.workspaces, activeWorkspaceId]); + }, [loadWorkspace, router, user, workspaceList, activeWorkspaceId]); return { workspaceLoaded, diff --git a/packages/app/src/providers/app-state-provider/Provider.tsx b/packages/app/src/providers/app-state-provider/Provider.tsx index 30eb4198d..b8601e9ea 100644 --- a/packages/app/src/providers/app-state-provider/Provider.tsx +++ b/packages/app/src/providers/app-state-provider/Provider.tsx @@ -72,7 +72,6 @@ export const AppStateProvider = ({ // FIXME: onWorkspacesChange should have dispose function dataCenter?.onWorkspacesChange( () => { - console.log(123); setAppState({ ...appState, workspaceList: dataCenter.workspaces,