fix: public workspace loading (#1144)

This commit is contained in:
Himself65
2023-02-20 20:32:32 -06:00
committed by GitHub
parent 8c492d2a83
commit ed4d1e8bcd
8 changed files with 58 additions and 97 deletions
@@ -2,6 +2,7 @@ import { displayFlex, styled } from '@affine/component';
import { Breadcrumbs } from '@affine/component';
import { IconButton } from '@affine/component';
import { useTranslation } from '@affine/i18n';
import { useDataCenterPublicWorkspace } from '@affine/store';
import { PaperIcon, SearchIcon } from '@blocksuite/icons';
import dynamic from 'next/dynamic';
import NextLink from 'next/link';
@@ -10,7 +11,6 @@ import { ReactElement, useEffect, useMemo } from 'react';
import { PageLoading } from '@/components/loading';
import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
import { useLoadPublicWorkspace } from '@/hooks/use-load-public-workspace';
import { useModal } from '@/store/globalModal';
import type { NextPageWithLayout } from '../..//_app';
@@ -21,13 +21,17 @@ const DynamicBlocksuite = dynamic(() => import('@/components/editor'), {
const Page: NextPageWithLayout = () => {
const router = useRouter();
const { workspaceId, pageId } = router.query as Record<string, string>;
const { status, workspace: workspaceUnit } =
useLoadPublicWorkspace(workspaceId);
const { workspaceId, pageId } = router.query;
const { error, workspace: workspaceUnit } = useDataCenterPublicWorkspace(
typeof workspaceId === 'string' ? workspaceId : null
);
const { triggerQuickSearchModal } = useModal();
const { t } = useTranslation();
const page = useMemo(() => {
if (typeof pageId !== 'string') {
return null;
}
if (workspaceUnit?.blocksuiteWorkspace) {
return workspaceUnit.blocksuiteWorkspace.getPage(pageId);
}
@@ -46,18 +50,15 @@ const Page: NextPageWithLayout = () => {
}, [workspace, router, pageId]);
useEffect(() => {
if (status === 'error') {
if (error) {
router.push('/404');
}
}, [router, status]);
}, [router, error]);
if (status === 'loading') {
if (!workspace) {
return <PageLoading />;
}
if (status === 'error') {
return null;
}
return (
<PageContainer>
<NavContainer>
@@ -86,7 +87,7 @@ const Page: NextPageWithLayout = () => {
</SearchButton>
</NavContainer>
{workspace && page && (
{page && (
<DynamicBlocksuite
page={page}
workspace={workspace}
@@ -1,5 +1,5 @@
import { Breadcrumbs } from '@affine/component';
import { PageMeta } from '@affine/store';
import { PageMeta, useDataCenterPublicWorkspace } from '@affine/store';
import { SearchIcon } from '@blocksuite/icons';
import { useRouter } from 'next/router';
import { ReactElement, useEffect, useMemo } from 'react';
@@ -7,7 +7,6 @@ import { ReactElement, useEffect, useMemo } from 'react';
import { PageLoading } from '@/components/loading';
import { PageList } from '@/components/page-list';
import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
import { useLoadPublicWorkspace } from '@/hooks/use-load-public-workspace';
import { useModal } from '@/store/globalModal';
import {
@@ -20,8 +19,10 @@ import {
const All = () => {
const router = useRouter();
const { triggerQuickSearchModal } = useModal();
const { status, workspace } = useLoadPublicWorkspace(
router.query.workspaceId as string
const { workspace, error } = useDataCenterPublicWorkspace(
typeof router.query.workspaceId === 'string'
? router.query.workspaceId
: null
);
const pageList = useMemo(() => {
@@ -31,19 +32,15 @@ const All = () => {
const workspaceName = workspace?.blocksuiteWorkspace?.meta.name;
useEffect(() => {
if (status === 'error') {
if (error) {
router.push('/404');
}
}, [router, status]);
}, [router, error]);
if (status === 'loading') {
if (!workspace) {
return <PageLoading />;
}
if (status === 'error') {
return null;
}
return (
<PageContainer>
<NavContainer>