From 5b75d32a8ae797a1e24ff20628486af238727b4e Mon Sep 17 00:00:00 2001 From: Himself65 Date: Sun, 5 Mar 2023 02:29:02 -0600 Subject: [PATCH] fix: page crash in public workspace (#1324) --- .../panel/general/index.tsx | 4 +- .../block-suite-page-list/index.tsx | 1 - .../block-suite-page-list/page-list/index.tsx | 2 +- .../components/blocksuite/header/index.tsx | 7 ++- .../web/src/components/page-detail-editor.tsx | 3 ++ .../pure/workspace-avatar/index.tsx | 4 +- ...=> use-blocksuite-workspace-avatar-url.ts} | 2 +- .../pages/public-workspace/[workspaceId].tsx | 47 ++++++++++++++++--- .../[workspaceId]/[pageId].tsx | 15 +++--- 9 files changed, 65 insertions(+), 20 deletions(-) rename apps/web/src/hooks/{use-blocksuite-workspace-blob-url.ts => use-blocksuite-workspace-avatar-url.ts} (95%) diff --git a/apps/web/src/components/affine/workspace-setting-detail/panel/general/index.tsx b/apps/web/src/components/affine/workspace-setting-detail/panel/general/index.tsx index 150df3cf43..8ba9069d7f 100644 --- a/apps/web/src/components/affine/workspace-setting-detail/panel/general/index.tsx +++ b/apps/web/src/components/affine/workspace-setting-detail/panel/general/index.tsx @@ -3,7 +3,7 @@ import { useTranslation } from '@affine/i18n'; import React, { useState } from 'react'; import { useIsWorkspaceOwner } from '../../../../../hooks/affine/use-is-workspace-owner'; -import { useBlockSuiteWorkspaceBlobUrl } from '../../../../../hooks/use-blocksuite-workspace-blob-url'; +import { useBlockSuiteWorkspaceAvatarUrl } from '../../../../../hooks/use-blocksuite-workspace-avatar-url'; import { useBlockSuiteWorkspaceName } from '../../../../../hooks/use-blocksuite-workspace-name'; import { RemWorkspaceFlavour } from '../../../../../shared'; import { Upload } from '../../../../pure/file-upload'; @@ -43,7 +43,7 @@ export const GeneralPanel: React.FC = ({ setName(name); }; - const [, update] = useBlockSuiteWorkspaceBlobUrl( + const [, update] = useBlockSuiteWorkspaceAvatarUrl( workspace.blockSuiteWorkspace ); return ( diff --git a/apps/web/src/components/blocksuite/block-suite-page-list/index.tsx b/apps/web/src/components/blocksuite/block-suite-page-list/index.tsx index 5754450e15..1a570528ee 100644 --- a/apps/web/src/components/blocksuite/block-suite-page-list/index.tsx +++ b/apps/web/src/components/blocksuite/block-suite-page-list/index.tsx @@ -30,7 +30,6 @@ export const BlockSuitePublicPageList: React.FC = ({ isPublic={true} blockSuiteWorkspace={blockSuiteWorkspace} onClickPage={onOpenPage} - listType="all" /> ); }; diff --git a/apps/web/src/components/blocksuite/block-suite-page-list/page-list/index.tsx b/apps/web/src/components/blocksuite/block-suite-page-list/page-list/index.tsx index d6ad11c0af..f9ec19357b 100644 --- a/apps/web/src/components/blocksuite/block-suite-page-list/page-list/index.tsx +++ b/apps/web/src/components/blocksuite/block-suite-page-list/page-list/index.tsx @@ -149,7 +149,7 @@ export const PageList: React.FC = ({ {pageMeta.title || t('Untitled')} - {!isTrash && ( + {listType && !isTrash && ( { helper.setPageMeta(pageMeta.id, { diff --git a/apps/web/src/components/blocksuite/header/index.tsx b/apps/web/src/components/blocksuite/header/index.tsx index eb9877a60b..728d14aac4 100644 --- a/apps/web/src/components/blocksuite/header/index.tsx +++ b/apps/web/src/components/blocksuite/header/index.tsx @@ -20,12 +20,14 @@ import { export type BlockSuiteEditorHeaderProps = React.PropsWithChildren<{ blockSuiteWorkspace: BlockSuiteWorkspace; pageId: string; + isPublic?: boolean; }>; export const BlockSuiteEditorHeader: React.FC = ({ blockSuiteWorkspace, pageId, children, + isPublic, }) => { const page = blockSuiteWorkspace.getPage(pageId); // fixme(himself65): remove this atom and move it to props @@ -43,7 +45,10 @@ export const BlockSuiteEditorHeader: React.FC = ({ return (
) => void; @@ -32,6 +33,7 @@ export const PageDetailEditor: React.FC = ({ onInit, onLoad, header, + isPublic, }) => { const page = blockSuiteWorkspace.getPage(pageId); if (!page) { @@ -48,6 +50,7 @@ export const PageDetailEditor: React.FC = ({ {title} diff --git a/apps/web/src/components/pure/workspace-avatar/index.tsx b/apps/web/src/components/pure/workspace-avatar/index.tsx index 95ef603598..bb0e38e41b 100644 --- a/apps/web/src/components/pure/workspace-avatar/index.tsx +++ b/apps/web/src/components/pure/workspace-avatar/index.tsx @@ -1,7 +1,7 @@ import { UNTITLED_WORKSPACE_NAME } from '@affine/env'; import React from 'react'; -import { useBlockSuiteWorkspaceBlobUrl } from '../../../hooks/use-blocksuite-workspace-blob-url'; +import { useBlockSuiteWorkspaceAvatarUrl } from '../../../hooks/use-blocksuite-workspace-avatar-url'; import { BlockSuiteWorkspace, RemWorkspace } from '../../../shared'; import { stringToColour } from '../../../utils'; @@ -87,7 +87,7 @@ export const BlockSuiteWorkspaceAvatar: React.FC = ({ style, ...props }) => { - const [avatar] = useBlockSuiteWorkspaceBlobUrl(workspace); + const [avatar] = useBlockSuiteWorkspaceAvatarUrl(workspace); return ( @@ -38,14 +44,43 @@ const ListPageInner: React.FC<{ }, [router, workspaceId] ); + useEffect(() => { + blockSuiteWorkspace.awarenessStore.setFlag('enable_block_hub', false); + }, [blockSuiteWorkspace]); + const [name] = useBlockSuiteWorkspaceName(blockSuiteWorkspace); + const [avatar] = useBlockSuiteWorkspaceAvatarUrl(blockSuiteWorkspace); + const setSearchModalOpen = useSetAtom(openQuickSearchModalAtom); + const handleOpen = useCallback(() => { + setSearchModalOpen(true); + }, [setSearchModalOpen]); if (!blockSuiteWorkspace) { return ; } return ( - + <> + + + + + {name} + + + + + + + + + ); }; diff --git a/apps/web/src/pages/public-workspace/[workspaceId]/[pageId].tsx b/apps/web/src/pages/public-workspace/[workspaceId]/[pageId].tsx index f8be1273d1..5fe9c22c8c 100644 --- a/apps/web/src/pages/public-workspace/[workspaceId]/[pageId].tsx +++ b/apps/web/src/pages/public-workspace/[workspaceId]/[pageId].tsx @@ -19,6 +19,8 @@ import { QueryParamError } from '../../../components/affine/affine-error-eoundar import { PageDetailEditor } from '../../../components/page-detail-editor'; import { WorkspaceAvatar } from '../../../components/pure/footer'; import { PageLoading } from '../../../components/pure/loading'; +import { useBlockSuiteWorkspaceAvatarUrl } from '../../../hooks/use-blocksuite-workspace-avatar-url'; +import { useBlockSuiteWorkspaceName } from '../../../hooks/use-blocksuite-workspace-name'; import { WorkspaceLayout } from '../../../layouts'; import { NextPageWithLayout } from '../../../shared'; @@ -67,12 +69,17 @@ const PublicWorkspaceDetailPageInner: React.FC<{ if (!blockSuiteWorkspace) { throw new Error('cannot find workspace'); } + useEffect(() => { + blockSuiteWorkspace.awarenessStore.setFlag('enable_block_hub', false); + }, [blockSuiteWorkspace]); const { t } = useTranslation(); - const name = blockSuiteWorkspace.meta.name; + const [name] = useBlockSuiteWorkspaceName(blockSuiteWorkspace); + const [avatar] = useBlockSuiteWorkspaceAvatarUrl(blockSuiteWorkspace); const pageTitle = blockSuiteWorkspace.meta.getPageMeta(pageId)?.title; return ( <> { @@ -90,11 +97,7 @@ const PublicWorkspaceDetailPageInner: React.FC<{ - + {name}