diff --git a/components/Chat/Chat.tsx b/components/Chat/Chat.tsx index 9898a33..0109d75 100644 --- a/components/Chat/Chat.tsx +++ b/components/Chat/Chat.tsx @@ -467,6 +467,11 @@ export const Chat = memo(({ stopConversationRef }: Props) => { key={index} message={message} messageIndex={index} + onEdit={(editedMessage) => { + setCurrentMessage(editedMessage); + // discard edited message and the ones that come after then resend + handleSend(editedMessage, selectedConversation?.messages.length - index); + }} /> ))} diff --git a/components/Chat/ChatMessage.tsx b/components/Chat/ChatMessage.tsx index 8595586..9c2cdb9 100644 --- a/components/Chat/ChatMessage.tsx +++ b/components/Chat/ChatMessage.tsx @@ -26,9 +26,10 @@ import remarkMath from 'remark-math'; interface Props { message: Message; messageIndex: number; + onEdit?: (editedMessage: Message) => void } -export const ChatMessage: FC = memo(({ message, messageIndex }) => { +export const ChatMessage: FC = memo(({ message, messageIndex, onEdit }) => { const { t } = useTranslation('chat'); const { @@ -57,31 +58,8 @@ export const ChatMessage: FC = memo(({ message, messageIndex }) => { const handleEditMessage = () => { if (message.content != messageContent) { - if (selectedConversation) { - const updatedMessages = selectedConversation.messages - .map((m, i) => { - if (i < messageIndex) { - return m; - } - }) - .filter((m) => m) as Message[]; - - const updatedConversation = { - ...selectedConversation, - messages: updatedMessages, - }; - - const { single, all } = updateConversation( - updatedConversation, - conversations, - ); - - homeDispatch({ field: 'selectedConversation', value: single }); - homeDispatch({ field: 'conversations', value: all }); - homeDispatch({ - field: 'currentMessage', - value: { ...message, content: messageContent }, - }); + if (selectedConversation && onEdit) { + onEdit({ ...message, content: messageContent }); } } setIsEditing(false);