feat: add read only mode for page in trash (#3440)

This commit is contained in:
JimmFly
2023-07-28 15:01:10 +00:00
committed by GitHub
parent ed8b2d9927
commit d96263fde9
2 changed files with 11 additions and 3 deletions
@@ -10,7 +10,8 @@ import { useReferenceLinkHelper } from './use-reference-link-helper';
export function useBlockSuiteMetaHelper( export function useBlockSuiteMetaHelper(
blockSuiteWorkspace: BlockSuiteWorkspace blockSuiteWorkspace: BlockSuiteWorkspace
) { ) {
const { setPageMeta, getPageMeta } = usePageMetaHelper(blockSuiteWorkspace); const { setPageMeta, getPageMeta, setPageReadonly } =
usePageMetaHelper(blockSuiteWorkspace);
const { addReferenceLink } = useReferenceLinkHelper(blockSuiteWorkspace); const { addReferenceLink } = useReferenceLinkHelper(blockSuiteWorkspace);
const metas = useBlockSuitePageMeta(blockSuiteWorkspace); const metas = useBlockSuitePageMeta(blockSuiteWorkspace);
@@ -56,8 +57,9 @@ export function useBlockSuiteMetaHelper(
trashDate: +new Date(), trashDate: +new Date(),
trashRelate: isRoot ? parentMeta?.id : undefined, trashRelate: isRoot ? parentMeta?.id : undefined,
}); });
setPageReadonly(pageId, true);
}, },
[getPageMeta, metas, setPageMeta] [getPageMeta, metas, setPageMeta, setPageReadonly]
); );
const restoreFromTrash = useCallback( const restoreFromTrash = useCallback(
@@ -73,11 +75,12 @@ export function useBlockSuiteMetaHelper(
trashDate: undefined, trashDate: undefined,
trashRelate: undefined, trashRelate: undefined,
}); });
setPageReadonly(pageId, false);
subpageIds.forEach(id => { subpageIds.forEach(id => {
restoreFromTrash(id); restoreFromTrash(id);
}); });
}, },
[addReferenceLink, getPageMeta, setPageMeta] [addReferenceLink, getPageMeta, setPageMeta, setPageReadonly]
); );
const permanentlyDeletePage = useCallback( const permanentlyDeletePage = useCallback(
@@ -57,6 +57,11 @@ export function usePageMetaHelper(blockSuiteWorkspace: Workspace) {
}); });
blockSuiteWorkspace.meta.setPageMeta(pageId, { title: newTitle }); 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<PageMeta>) => { setPageMeta: (pageId: string, pageMeta: Partial<PageMeta>) => {
blockSuiteWorkspace.meta.setPageMeta(pageId, pageMeta); blockSuiteWorkspace.meta.setPageMeta(pageId, pageMeta);
}, },