From d96263fde95f15ade3f801ef7f112405acf76069 Mon Sep 17 00:00:00 2001 From: JimmFly Date: Fri, 28 Jul 2023 23:01:10 +0800 Subject: [PATCH] feat: add read only mode for page in trash (#3440) --- .../core/src/hooks/affine/use-block-suite-meta-helper.ts | 9 ++++++--- packages/hooks/src/use-block-suite-page-meta.ts | 5 +++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/core/src/hooks/affine/use-block-suite-meta-helper.ts b/apps/core/src/hooks/affine/use-block-suite-meta-helper.ts index a4daecb243..433c61e6bf 100644 --- a/apps/core/src/hooks/affine/use-block-suite-meta-helper.ts +++ b/apps/core/src/hooks/affine/use-block-suite-meta-helper.ts @@ -10,7 +10,8 @@ import { useReferenceLinkHelper } from './use-reference-link-helper'; export function useBlockSuiteMetaHelper( blockSuiteWorkspace: BlockSuiteWorkspace ) { - const { setPageMeta, getPageMeta } = usePageMetaHelper(blockSuiteWorkspace); + const { setPageMeta, getPageMeta, setPageReadonly } = + usePageMetaHelper(blockSuiteWorkspace); const { addReferenceLink } = useReferenceLinkHelper(blockSuiteWorkspace); const metas = useBlockSuitePageMeta(blockSuiteWorkspace); @@ -56,8 +57,9 @@ export function useBlockSuiteMetaHelper( trashDate: +new Date(), trashRelate: isRoot ? parentMeta?.id : undefined, }); + setPageReadonly(pageId, true); }, - [getPageMeta, metas, setPageMeta] + [getPageMeta, metas, setPageMeta, setPageReadonly] ); const restoreFromTrash = useCallback( @@ -73,11 +75,12 @@ export function useBlockSuiteMetaHelper( trashDate: undefined, trashRelate: undefined, }); + setPageReadonly(pageId, false); subpageIds.forEach(id => { restoreFromTrash(id); }); }, - [addReferenceLink, getPageMeta, setPageMeta] + [addReferenceLink, getPageMeta, setPageMeta, setPageReadonly] ); const permanentlyDeletePage = useCallback( diff --git a/packages/hooks/src/use-block-suite-page-meta.ts b/packages/hooks/src/use-block-suite-page-meta.ts index 809a94e260..1456129566 100644 --- a/packages/hooks/src/use-block-suite-page-meta.ts +++ b/packages/hooks/src/use-block-suite-page-meta.ts @@ -57,6 +57,11 @@ export function usePageMetaHelper(blockSuiteWorkspace: Workspace) { }); blockSuiteWorkspace.meta.setPageMeta(pageId, { title: newTitle }); }, + setPageReadonly: (pageId: string, readonly: boolean) => { + const page = blockSuiteWorkspace.getPage(pageId); + assertExists(page); + page.awarenessStore.setReadonly(page, readonly); + }, setPageMeta: (pageId: string, pageMeta: Partial) => { blockSuiteWorkspace.meta.setPageMeta(pageId, pageMeta); },