mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-21 20:16:26 +08:00
refactor: workspace loading logic (#1966)
This commit is contained in:
@@ -10,9 +10,12 @@ declare module '@blocksuite/store' {
|
||||
export function useBlockSuiteWorkspacePageIsPublic(page: Page) {
|
||||
const [isPublic, set] = useState<boolean>(() => page.meta.isPublic ?? false);
|
||||
useEffect(() => {
|
||||
page.workspace.meta.pageMetasUpdated.on(() => {
|
||||
const disposable = page.workspace.meta.pageMetasUpdated.on(() => {
|
||||
set(page.meta.isPublic ?? false);
|
||||
});
|
||||
return () => {
|
||||
disposable.dispose();
|
||||
};
|
||||
}, [page]);
|
||||
const setIsPublic = useCallback(
|
||||
(isPublic: boolean) => {
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Page, Workspace } from '@blocksuite/store';
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
export function useBlockSuiteWorkspacePage(
|
||||
blockSuiteWorkspace: Workspace,
|
||||
pageId: string | null
|
||||
): Page | null {
|
||||
const [page, setPage] = useState(() => {
|
||||
if (pageId === null) {
|
||||
return null;
|
||||
}
|
||||
return blockSuiteWorkspace.getPage(pageId);
|
||||
});
|
||||
useEffect(() => {
|
||||
if (pageId) {
|
||||
setPage(blockSuiteWorkspace.getPage(pageId));
|
||||
}
|
||||
}, [blockSuiteWorkspace, pageId]);
|
||||
useEffect(() => {
|
||||
const disposable = blockSuiteWorkspace.slots.pageAdded.on(id => {
|
||||
if (pageId === id) {
|
||||
setPage(blockSuiteWorkspace.getPage(id));
|
||||
}
|
||||
});
|
||||
return () => {
|
||||
disposable.dispose();
|
||||
};
|
||||
}, [blockSuiteWorkspace, pageId]);
|
||||
return page;
|
||||
}
|
||||
Reference in New Issue
Block a user