diff --git a/packages/app/src/pages/workspace/[workspaceId]/index.tsx b/packages/app/src/pages/workspace/[workspaceId]/index.tsx index 8d476bc36a..88479715ea 100644 --- a/packages/app/src/pages/workspace/[workspaceId]/index.tsx +++ b/packages/app/src/pages/workspace/[workspaceId]/index.tsx @@ -1,33 +1,13 @@ -import { useEffect } from 'react'; -import { useRouter } from 'next/router'; -import { useLoadWorkspace } from '@/providers/app-state-provider/hooks'; -import { useAppState } from '@/providers/app-state-provider/context'; +import { + useLoadWorkspace, + useLoadPage, +} from '@/providers/app-state-provider/hooks'; const Page = () => { - const router = useRouter(); - const workspace = useLoadWorkspace(); - const { createPage, currentWorkspaceId } = useAppState(); + useLoadWorkspace(); + useLoadPage(); - useEffect(() => { - if (!workspace) { - return; - } - - const savedPageId = workspace.meta.pageMetas[0]?.id; - if (savedPageId) { - router.push(`/workspace/${currentWorkspaceId}/${savedPageId}`); - return; - } - - createPage?.current?.()?.then(async pageId => { - if (!pageId) { - return; - } - router.push(`/workspace/${currentWorkspaceId}/${pageId}`); - }); - }, [workspace, currentWorkspaceId, createPage, router]); - - return
; + return <>; }; export default Page; diff --git a/packages/app/src/providers/app-state-provider/hooks.ts b/packages/app/src/providers/app-state-provider/hooks.ts index c57dd89ab9..c3565030b2 100644 --- a/packages/app/src/providers/app-state-provider/hooks.ts +++ b/packages/app/src/providers/app-state-provider/hooks.ts @@ -17,12 +17,31 @@ export const useLoadWorkspace = () => { export const useLoadPage = () => { const router = useRouter(); - const { loadPage, currentPage } = useAppState(); + const { loadPage, currentPage, createPage, currentWorkspaceId } = + useAppState(); const workspace = useLoadWorkspace(); const pageId = router.query.pageId as string; useEffect(() => { + if (!workspace) { + return; + } + const page = workspace?.getPage(pageId); + if (!page) { + const savedPageId = workspace.meta.pageMetas[0]?.id; + if (savedPageId) { + router.push(`/workspace/${currentWorkspaceId}/${savedPageId}`); + return; + } + + createPage?.current?.()?.then(async pageId => { + if (!pageId) { + return; + } + router.push(`/workspace/${currentWorkspaceId}/${pageId}`); + }); + } loadPage?.current?.(pageId); }, [workspace, pageId, loadPage]);