diff --git a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx index 8a99e491dd..45d50050ff 100644 --- a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx +++ b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx @@ -26,6 +26,7 @@ import { findImageBlocks, findMainTextBlocks, getMainTextContent } from '@render import { Button, Dropdown, Popconfirm, Tooltip } from 'antd' import dayjs from 'dayjs' import { AtSign, Copy, Languages, Menu, RefreshCw, Save, Share, Split, ThumbsUp, Trash } from 'lucide-react' +import { FilePenLine } from 'lucide-react' import { FC, memo, useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' @@ -221,6 +222,10 @@ const MessageMenubar: FC = (props) => { [isTranslating, message, getTranslationUpdater, mainTextContent] ) + const isEditable = useMemo(() => { + return findMainTextBlocks(message).length === 1 + }, [message]) + const dropdownItems = useMemo( () => [ { @@ -232,12 +237,16 @@ const MessageMenubar: FC = (props) => { window.api.file.save(fileName, mainTextContent) } }, - // { - // label: t('common.edit'), - // key: 'edit', - // icon: , - // onClick: onEdit - // }, + ...(isEditable + ? [ + { + label: t('common.edit'), + key: 'edit', + icon: , + onClick: onEdit + } + ] + : []), { label: t('chat.message.new.branch'), key: 'new-branch', @@ -338,7 +347,7 @@ const MessageMenubar: FC = (props) => { ].filter(Boolean) } ], - [message, messageContainerRef, mainTextContent, onNewBranch, t, topic.name, exportMenuOptions] + [message, messageContainerRef, onEdit, mainTextContent, onNewBranch, t, topic.name, exportMenuOptions] ) const onRegenerate = async (e: React.MouseEvent | undefined) => {