import { useRef } from 'react'; import { EModelEndpoint } from 'librechat-data-provider'; import { useUpdateMessageMutation } from 'librechat-data-provider/react-query'; import Container from '~/components/Messages/Content/Container'; import { useChatContext } from '~/Providers'; import type { TEditProps } from '~/common'; import { useLocalize } from '~/hooks'; const EditMessage = ({ text, message, isSubmitting, ask, enterEdit, siblingIdx, setSiblingIdx, }: TEditProps) => { const { getMessages, setMessages, conversation } = useChatContext(); const textEditor = useRef(null); const { conversationId, parentMessageId, messageId } = message; const { endpoint: _endpoint, endpointType } = conversation ?? { endpoint: null }; const endpoint = endpointType ?? _endpoint; const updateMessageMutation = useUpdateMessageMutation(conversationId ?? ''); const localize = useLocalize(); const resubmitMessage = () => { const text = textEditor?.current?.innerText ?? ''; if (message.isCreatedByUser) { ask({ text, parentMessageId, conversationId, }); setSiblingIdx((siblingIdx ?? 0) - 1); } else { const messages = getMessages(); const parentMessage = messages?.find((msg) => msg.messageId === parentMessageId); if (!parentMessage) { return; } ask( { ...parentMessage }, { editedText: text, editedMessageId: messageId, isRegenerate: true, isEdited: true, }, ); setSiblingIdx((siblingIdx ?? 0) - 1); } enterEdit(true); }; const updateMessage = () => { const messages = getMessages(); if (!messages) { return; } const text = textEditor?.current?.innerText ?? ''; updateMessageMutation.mutate({ conversationId: conversationId ?? '', model: conversation?.model ?? 'gpt-3.5-turbo', messageId, text, }); setMessages( messages.map((msg) => msg.messageId === messageId ? { ...msg, text, isEdited: true, } : msg, ), ); enterEdit(true); }; return (
{text}
); }; export default EditMessage;