@@ -4,10 +4,14 @@ import { FormValues } from '@open-webui-react-native/mobile/shared/utils/form';
44import {
55 chatApi ,
66 ChatResponse ,
7- prepareUpdateMessageInChatPayload ,
87 prepareCompleteChatPayload ,
98 prepareUpdateMessageToSendPayload ,
9+ prepareEditAssistantMessagePayload ,
10+ prepareCopyEditedMessagePayload ,
11+ prepareUpdateMessageInChatPayload ,
12+ History ,
1013} from '@open-webui-react-native/shared/data-access/api' ;
14+ import { Role } from '@open-webui-react-native/shared/data-access/common' ;
1115import { socketService } from '@open-webui-react-native/shared/data-access/websocket' ;
1216
1317interface UseEditMessageProps {
@@ -32,6 +36,12 @@ export const useEditMessage = ({ chat, modelId }: UseEditMessageProps): typeof r
3236 const { mutateAsync : updateChat , isPending : isChatUpdating } = chatApi . useUpdate ( ) ;
3337 const { mutate : completeChat } = chatApi . useCompleteChat ( ) ;
3438
39+ const isAssistantMessage = ( chatHistory : History , messageId : string ) : boolean => {
40+ const editedMessage = chatHistory . messages [ messageId ] ;
41+
42+ return editedMessage . role === Role . ASSISTANT ;
43+ } ;
44+
3545 const startEditing = ( messageId : string , content : string ) : void => {
3646 setEditingMessageId ( messageId ) ;
3747 reset ( { editMessageInputValue : content } ) ;
@@ -47,7 +57,11 @@ export const useEditMessage = ({ chat, modelId }: UseEditMessageProps): typeof r
4757 return ;
4858 }
4959
50- const preparedChat = prepareUpdateMessageInChatPayload ( chat , editingMessageId , message ) ;
60+ const chatHistory = chat . chat . history ;
61+
62+ const preparedChat : ChatResponse = isAssistantMessage ( chatHistory , editingMessageId )
63+ ? prepareCopyEditedMessagePayload ( chat , editingMessageId , message )
64+ : prepareUpdateMessageInChatPayload ( chat , editingMessageId , message ) ;
5165
5266 await updateChat ( preparedChat ) ;
5367 cancelEditing ( ) ;
@@ -60,10 +74,14 @@ export const useEditMessage = ({ chat, modelId }: UseEditMessageProps): typeof r
6074 const chatHistory = chat . chat . history ;
6175 const editedMessage = chatHistory . messages [ editingMessageId ] ;
6276
63- const preparedChat = prepareUpdateMessageToSendPayload ( chat , message , modelId , editedMessage . parentId ) ;
77+ const preparedChat : ChatResponse = isAssistantMessage ( chatHistory , editingMessageId )
78+ ? prepareEditAssistantMessagePayload ( chat , editingMessageId , message )
79+ : prepareUpdateMessageToSendPayload ( chat , message , modelId , editedMessage . parentId ) ;
6480
6581 await updateChat ( preparedChat , {
6682 onSuccess : ( data ) => {
83+ if ( editedMessage . role === Role . ASSISTANT ) return ;
84+
6785 const completePayload = prepareCompleteChatPayload ( {
6886 chatId : data . id ,
6987 messageId : data . chat ! . history . currentId ,
0 commit comments