Files
AFFiNE-Mirror/packages/hooks/src/use-block-suite-workspace-page-title.ts
T
2023-04-16 21:36:32 -05:00

26 lines
816 B
TypeScript

import type { Workspace } from '@blocksuite/store';
import { assertExists } from '@blocksuite/store';
import { useEffect, useState } from 'react';
export function useBlockSuiteWorkspacePageTitle(
blockSuiteWorkspace: Workspace,
pageId: string
) {
const page = blockSuiteWorkspace.getPage(pageId);
const [title, setTitle] = useState(() => page?.meta.title || 'AFFiNE');
useEffect(() => {
const page = blockSuiteWorkspace.getPage(pageId);
setTitle(page?.meta.title || 'Untitled');
const dispose = blockSuiteWorkspace.meta.pageMetasUpdated.on(() => {
const page = blockSuiteWorkspace.getPage(pageId);
assertExists(page);
setTitle(page?.meta.title || 'Untitled');
});
return () => {
dispose.dispose();
};
}, [blockSuiteWorkspace, pageId]);
return title;
}