Files
AFFiNE-Mirror/apps/web/src/hooks/use-blocksuite-workspace-page-title.ts
T
2023-03-20 00:07:54 -05:00

27 lines
825 B
TypeScript

import { assertExists } from '@blocksuite/store';
import { useEffect, useState } from 'react';
import type { BlockSuiteWorkspace } from '../shared';
export function useBlockSuiteWorkspacePageTitle(
blockSuiteWorkspace: BlockSuiteWorkspace,
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 || 'AFFiNE');
const dispose = blockSuiteWorkspace.meta.pageMetasUpdated.on(() => {
const page = blockSuiteWorkspace.getPage(pageId);
assertExists(page);
setTitle(page?.meta.title || 'AFFiNE');
});
return () => {
dispose.dispose();
};
}, [blockSuiteWorkspace, pageId]);
return title;
}