mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-16 09:36:17 +08:00
fix: useLoadPage should handle page not exist
This commit is contained in:
@@ -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]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user