fix(editor): render title in page block header using DocDisplayMetaService (#9878)

https://github.com/user-attachments/assets/24490a58-ef66-404a-b9cd-1e94d84c6f58
This commit is contained in:
L-Sun
2025-01-23 12:51:55 +00:00
parent 872a578bf7
commit 79fe687b1a
2 changed files with 13 additions and 1 deletions
@@ -13,6 +13,9 @@ export const header = style({
}); });
export const title = style({ export const title = style({
display: 'flex',
alignItems: 'center',
gap: 4,
flex: 1, flex: 1,
color: cssVarV2('text/primary'), color: cssVarV2('text/primary'),
fontFamily: 'Inter', fontFamily: 'Inter',
@@ -1,6 +1,7 @@
import { IconButton } from '@affine/component'; import { IconButton } from '@affine/component';
import { useSharingUrl } from '@affine/core/components/hooks/affine/use-share-url'; import { useSharingUrl } from '@affine/core/components/hooks/affine/use-share-url';
import { WorkspaceDialogService } from '@affine/core/modules/dialogs'; import { WorkspaceDialogService } from '@affine/core/modules/dialogs';
import { DocDisplayMetaService } from '@affine/core/modules/doc-display-meta';
import { EditorService } from '@affine/core/modules/editor'; import { EditorService } from '@affine/core/modules/editor';
import { FeatureFlagService } from '@affine/core/modules/feature-flag'; import { FeatureFlagService } from '@affine/core/modules/feature-flag';
import { useInsidePeekView } from '@affine/core/modules/peek-view/view/modal-container'; import { useInsidePeekView } from '@affine/core/modules/peek-view/view/modal-container';
@@ -32,6 +33,10 @@ const EdgelessNoteToggleButton = ({ note }: { note: NoteBlockModel }) => {
const editor = useService(EditorService).editor; const editor = useService(EditorService).editor;
const editorContainer = useLiveData(editor.editorContainer$); const editorContainer = useLiveData(editor.editorContainer$);
const gfx = editorContainer?.std.get(GfxControllerIdentifier); const gfx = editorContainer?.std.get(GfxControllerIdentifier);
const docDisplayMetaService = useService(DocDisplayMetaService);
const Icon = useLiveData(docDisplayMetaService.icon$(note.doc.id));
const title = useLiveData(docDisplayMetaService.title$(note.doc.id));
useEffect(() => { useEffect(() => {
setCollapsed(note.edgeless.collapse); setCollapsed(note.edgeless.collapse);
@@ -80,7 +85,11 @@ const EdgelessNoteToggleButton = ({ note }: { note: NoteBlockModel }) => {
{collapsed ? <ToggleRightIcon /> : <ToggleDownIcon />} {collapsed ? <ToggleRightIcon /> : <ToggleDownIcon />}
</IconButton> </IconButton>
<div className={styles.title} data-testid="edgeless-note-title"> <div className={styles.title} data-testid="edgeless-note-title">
{collapsed && (note.doc.meta?.title ?? 'Untitled')} {collapsed && (
<>
<Icon /> {title}
</>
)}
</div> </div>
</> </>
); );