diff --git a/packages/frontend/core/src/hooks/use-global-state.ts b/packages/frontend/core/src/hooks/use-global-state.ts index b42becafe9..dface9a866 100644 --- a/packages/frontend/core/src/hooks/use-global-state.ts +++ b/packages/frontend/core/src/hooks/use-global-state.ts @@ -1,3 +1,4 @@ +import type { PageMeta } from '@blocksuite/store'; import { noop } from 'lodash-es'; import { useEffect } from 'react'; @@ -14,3 +15,7 @@ export function useDocumentTitle(newTitle?: string | null) { }; }, [newTitle]); } + +export function usePageDocumentTitle(pageMeta?: PageMeta) { + useDocumentTitle(pageMeta?.title ? `${pageMeta.title} · AFFiNE` : null); +} diff --git a/packages/frontend/core/src/pages/share/share-detail-page.tsx b/packages/frontend/core/src/pages/share/share-detail-page.tsx index fa667a19db..4c1143957a 100644 --- a/packages/frontend/core/src/pages/share/share-detail-page.tsx +++ b/packages/frontend/core/src/pages/share/share-detail-page.tsx @@ -1,4 +1,5 @@ import { MainContainer } from '@affine/component/workspace'; +import { usePageDocumentTitle } from '@affine/core/hooks/use-global-state'; import { DebugLogger } from '@affine/debug'; import { fetchWithTraceReport } from '@affine/graphql'; import { globalBlockSuiteSchema } from '@affine/workspace'; @@ -119,6 +120,8 @@ export const loader: LoaderFunction = async ({ params }) => { export const Component = (): ReactElement => { const { page, publishMode } = useLoaderData() as LoaderData; + usePageDocumentTitle(page.meta); + return ( diff --git a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx index bbc820083a..cf305f9d76 100644 --- a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx +++ b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx @@ -35,7 +35,7 @@ import { import { TrashPageFooter } from '../../../components/pure/trash-page-footer'; import { TopTip } from '../../../components/top-tip'; import { useRegisterBlocksuiteEditorCommands } from '../../../hooks/affine/use-register-blocksuite-editor-commands'; -import { useDocumentTitle } from '../../../hooks/use-global-state'; +import { usePageDocumentTitle } from '../../../hooks/use-global-state'; import { useNavigateHelper } from '../../../hooks/use-navigate-helper'; import { performanceRenderLogger } from '../../../shared'; import { PageNotFound } from '../../404'; @@ -115,7 +115,7 @@ const DetailPageImpl = memo(function DetailPageImpl({ page }: { page: Page }) { const mode = useAtomValue(currentModeAtom); const setPageMode = useSetAtom(setPageModeAtom); useRegisterBlocksuiteEditorCommands(currentPageId, mode); - useDocumentTitle(pageMeta?.title ? `${pageMeta.title} · AFFiNE` : null); + usePageDocumentTitle(pageMeta); const onLoad = useCallback( (page: Page, editor: AffineEditorContainer) => {