mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-09-22 19:53:48 +08:00
feat: add read only mode for page in trash (#3440)
This commit is contained in:
@@ -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);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user