import { useRef } from 'react'; import { useRecoilState, useRecoilValue } from 'recoil'; import { useUpdateMessageMutation } from 'librechat-data-provider'; import type { TEditProps } from '~/common'; import store from '~/store'; import Container from './Container'; import { useLocalize } from '~/hooks'; const EditMessage = ({ text, message, isSubmitting, ask, enterEdit, siblingIdx, setSiblingIdx, }: TEditProps) => { const [messages, setMessages] = useRecoilState(store.messages); const conversation = useRecoilValue(store.conversation); const textEditor = useRef(null); const { conversationId, parentMessageId, messageId } = message; 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 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 = () => { 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;