diff --git a/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx b/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx index b9d4813c33..e96b51e989 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx @@ -1,6 +1,6 @@ +import { PageDetailSkeleton } from '@affine/component/page-detail-skeleton'; import type { BlockSuiteFeatureFlags } from '@affine/env'; import { config } from '@affine/env'; -import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { rootCurrentPageIdAtom } from '@affine/workspace/atom'; import { WorkspaceFlavour } from '@affine/workspace/type'; import { assertExists } from '@blocksuite/store'; @@ -16,7 +16,6 @@ import { useCallback, useEffect } from 'react'; import { rootCurrentWorkspaceAtom } from '../../../atoms/root'; import { Unreachable } from '../../../components/affine/affine-error-eoundary'; -import { PageLoading } from '../../../components/pure/loading'; import { useReferenceLinkEffect } from '../../../hooks/affine/use-reference-link-effect'; import { useCurrentWorkspace } from '../../../hooks/current/use-current-workspace'; import { usePinboardHandler } from '../../../hooks/use-pinboard-handler'; @@ -41,8 +40,8 @@ const WorkspaceDetail: React.FC = () => { const { openPage } = useRouterHelper(router); const currentPageId = useAtomValue(rootCurrentPageIdAtom); const [currentWorkspace] = useCurrentWorkspace(); - const t = useAFFiNEI18N(); assertExists(currentWorkspace); + assertExists(currentPageId); const blockSuiteWorkspace = currentWorkspace.blockSuiteWorkspace; const { setPageMeta, getPageMeta } = usePageMetaHelper(blockSuiteWorkspace); const { deletePin } = usePinboardHandler({ @@ -85,9 +84,6 @@ const WorkspaceDetail: React.FC = () => { setEditorFlags(currentWorkspace.blockSuiteWorkspace); } }, [currentWorkspace]); - if (!currentPageId) { - return ; - } if (currentWorkspace.flavour === WorkspaceFlavour.AFFINE) { const PageDetail = WorkspacePlugins[currentWorkspace.flavour].UI.PageDetail; return ( @@ -112,16 +108,15 @@ const WorkspaceDetailPage: NextPageWithLayout = () => { const router = useRouter(); const currentWorkspace = useAtomValue(rootCurrentWorkspaceAtom); const currentPageId = useAtomValue(rootCurrentPageIdAtom); - const t = useAFFiNEI18N(); useRouterAndWorkspaceWithPageIdDefense(router); const page = useBlockSuiteWorkspacePage( currentWorkspace.blockSuiteWorkspace, currentPageId ); if (!router.isReady) { - return ; + return ; } else if (!currentPageId || !page) { - return ; + return ; } return ; }; diff --git a/packages/component/src/components/page-detail-skeleton/index.css.ts b/packages/component/src/components/page-detail-skeleton/index.css.ts new file mode 100644 index 0000000000..abf38dd19c --- /dev/null +++ b/packages/component/src/components/page-detail-skeleton/index.css.ts @@ -0,0 +1,10 @@ +import { style } from '@vanilla-extract/css'; + +export const pageDetailSkeletonStyle = style({ + padding: '0 20px', +}); + +export const pageDetailSkeletonTitleStyle = style({ + height: '52px', + width: '100%', +}); diff --git a/packages/component/src/components/page-detail-skeleton/index.stories.tsx b/packages/component/src/components/page-detail-skeleton/index.stories.tsx new file mode 100644 index 0000000000..79f9da9943 --- /dev/null +++ b/packages/component/src/components/page-detail-skeleton/index.stories.tsx @@ -0,0 +1,12 @@ +import type { Meta } from '@storybook/react'; + +import { PageDetailSkeleton } from '.'; + +export default { + title: 'AFFiNE/PageDetailSkeleton', + component: PageDetailSkeleton, +} satisfies Meta; + +export const Basic = () => { + return ; +}; diff --git a/packages/component/src/components/page-detail-skeleton/index.tsx b/packages/component/src/components/page-detail-skeleton/index.tsx new file mode 100644 index 0000000000..4b323ff011 --- /dev/null +++ b/packages/component/src/components/page-detail-skeleton/index.tsx @@ -0,0 +1,14 @@ +import { BlockSuiteFallback } from '../block-suite-editor'; +import { + pageDetailSkeletonStyle, + pageDetailSkeletonTitleStyle, +} from './index.css'; + +export const PageDetailSkeleton = () => { + return ( +
+
+ +
+ ); +};