fix: useLoadPage should handle page not exist

This commit is contained in:
alt0
2022-12-22 16:18:45 +08:00
parent b0a51ca887
commit b0e7362eff
2 changed files with 27 additions and 28 deletions
@@ -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 <div></div>;
return <></>;
};
export default Page;
@@ -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]);