parent
5f0d1cb7ca
commit
836c24680b
|
@ -467,6 +467,11 @@ export const Chat = memo(({ stopConversationRef }: Props) => {
|
||||||
key={index}
|
key={index}
|
||||||
message={message}
|
message={message}
|
||||||
messageIndex={index}
|
messageIndex={index}
|
||||||
|
onEdit={(editedMessage) => {
|
||||||
|
setCurrentMessage(editedMessage);
|
||||||
|
// discard edited message and the ones that come after then resend
|
||||||
|
handleSend(editedMessage, selectedConversation?.messages.length - index);
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,10 @@ import remarkMath from 'remark-math';
|
||||||
interface Props {
|
interface Props {
|
||||||
message: Message;
|
message: Message;
|
||||||
messageIndex: number;
|
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 { t } = useTranslation('chat');
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
@ -57,31 +58,8 @@ export const ChatMessage: FC<Props> = memo(({ message, messageIndex }) => {
|
||||||
|
|
||||||
const handleEditMessage = () => {
|
const handleEditMessage = () => {
|
||||||
if (message.content != messageContent) {
|
if (message.content != messageContent) {
|
||||||
if (selectedConversation) {
|
if (selectedConversation && onEdit) {
|
||||||
const updatedMessages = selectedConversation.messages
|
onEdit({ ...message, content: messageContent });
|
||||||
.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 },
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setIsEditing(false);
|
setIsEditing(false);
|
||||||
|
|
Loading…
Reference in New Issue