From 663a33a8954d79de3d3ec769e4b0e6a2cf71fa71 Mon Sep 17 00:00:00 2001 From: Enrico Ros Date: Tue, 25 Feb 2025 16:29:41 -0800 Subject: [PATCH] DocAttachmentFragmentPane: improve looks --- .../DocAttachmentFragment.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/apps/chat/components/message/fragments-attachment-doc/DocAttachmentFragment.tsx b/src/apps/chat/components/message/fragments-attachment-doc/DocAttachmentFragment.tsx index b571a79eb..a75a214d3 100644 --- a/src/apps/chat/components/message/fragments-attachment-doc/DocAttachmentFragment.tsx +++ b/src/apps/chat/components/message/fragments-attachment-doc/DocAttachmentFragment.tsx @@ -87,9 +87,11 @@ export function DocAttachmentFragment(props: { if (!isDocPart(fragmentDocPart)) throw new Error('Unexpected part type: ' + fragmentDocPart.pt); - const fragmentTitle = fragmentDocPart.l1Title || fragment.caption; + const fragmentTitle = fragmentDocPart.l1Title || fragment.caption; // what's this for? const reverseToolbar = props.messageRole === 'assistant'; + const displayTitle = fragmentDocPart.meta?.srcFileName || fragmentDocPart.l1Title || fragmentDocPart.ref || FALLBACK_NO_TITLE; + // hooks @@ -121,14 +123,14 @@ export function DocAttachmentFragment(props: { const handleTitleEditSave = React.useCallback((newTitle: string) => { setIsEditingTitle(false); - if (!newTitle.trim() || !onFragmentReplace) return; + if (!newTitle.trim() || newTitle === displayTitle || !onFragmentReplace) return; // retitle the fragment, without changing Id const newDocPart: DMessageDocPart = { ...fragmentDocPart, l1Title: newTitle, version: (fragmentDocPart?.version ?? 1) + 1 }; const newFragment: DMessageAttachmentFragment = { ...fragment, title: newTitle, part: newDocPart }; onFragmentReplace(fragment.fId, newFragment); - }, [fragment, fragmentDocPart, onFragmentReplace]); + }, [displayTitle, fragment, fragmentDocPart, onFragmentReplace]); // LiveFile sync @@ -243,10 +245,8 @@ export function DocAttachmentFragment(props: { const headerRow = React.useMemo(() => { const TitleIcon = buttonIconForFragment(fragmentDocPart); - const displayTitle = fragmentDocPart.meta?.srcFileName || fragmentDocPart.l1Title || fragmentDocPart.ref || FALLBACK_NO_TITLE; - return <> - + {TitleIcon && } @@ -277,7 +277,7 @@ export function DocAttachmentFragment(props: { {!isEditing && liveFileControlButton} ; - }, [fragmentDocPart, handleTitleEditBegin, handleTitleEditCancel, handleTitleEditSave, headerTooltipContents, isEditing, isEditingTitle, liveFileControlButton, onFragmentReplace]); + }, [displayTitle, fragmentDocPart, handleTitleEditBegin, handleTitleEditCancel, handleTitleEditSave, headerTooltipContents, isEditing, isEditingTitle, liveFileControlButton, onFragmentReplace]); const toolbarRow = React.useMemo(() => (!onFragmentDelete && !onFragmentReplace) ? null : (