fix: chat messages disappear on edit (#575)

Resolves #574
This commit is contained in:
Shemar Lindie 2023-04-18 10:21:43 -04:00 committed by GitHub
parent 5f0d1cb7ca
commit 836c24680b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 26 deletions

View File

@ -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);
}}
/>
))}

View File

@ -26,9 +26,10 @@ import remarkMath from 'remark-math';
interface Props {
message: Message;
messageIndex: number;
onEdit?: (editedMessage: Message) => void
}
export const ChatMessage: FC<Props> = memo(({ message, messageIndex }) => {
export const ChatMessage: FC<Props> = memo(({ message, messageIndex, onEdit }) => {
const { t } = useTranslation('chat');
const {
@ -57,31 +58,8 @@ export const ChatMessage: FC<Props> = 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);