PRD-2007: Edit AI message logic#8
Conversation
|
@veliseev93 could you please take a look? |
| let preparedChat: ChatResponse; | ||
|
|
||
| if (editedMessage.role === Role.ASSISTANT) { | ||
| preparedChat = prepareEditAssistantMessagePayload(chat, editingMessageId, message); |
There was a problem hiding this comment.
@Tomass673 Could you please check the logic for “Save as copy”? When the “Save as copy” button is clicked, the history and history.currentId should be updated (similar to what happens after clicking the “Submit” button when editing a user message).
Also, in order to update the history branch, the prepareEditAssistantMessagePayload should look approximately as follows:
import uuid from 'react-native-uuid';
import { Role } from '@open-webui-react-native/shared/data-access/common';
import { ChatResponse, History } from '../models';
import { createMessagesList } from './create-messages-list';
export function prepareEditAssistantMessagePayload(
oldData: ChatResponse,
messageId: string,
newContent: string,
): ChatResponse {
const history = oldData.chat.history;
const messagesMap = { ...history.messages };
const newAssistantMessageId = uuid.v4()
const parentId = history?.messages?.[messageId]?.parentId
const target = messagesMap[messageId];
if (!target || target.role !== Role.ASSISTANT) return oldData;
const updatedMessage = {
...target,
childrenIs: [],
id: newAssistantMessageId,
content: newContent,
done: true,
};
const updatedHistory: History = {
...history,
currentId: newAssistantMessageId,
messages: {
...history.messages,
[newAssistantMessageId]: updatedMessage,
},
lastAssistantMessage:
history.lastAssistantMessage?.id === messageId ? updatedMessage : history.lastAssistantMessage,
};
updatedHistory.messages[parentId || ''].childrenIds?.push(newAssistantMessageId);
const lastAssistantMessage =
updatedHistory.lastAssistantMessage?.id === messageId ? updatedMessage : updatedHistory.lastAssistantMessage;
return {
...oldData,
chat: {
...oldData.chat,
history: {
...updatedHistory,
lastAssistantMessage,
},
messages: createMessagesList(updatedHistory, newAssistantMessageId),
},
};
}
This comment briefly describes the flow for editing an AI message, with links to the relevant code in the web application – https://app.clickup.com/t/24336023/PRD-1965?comment=90150163295336
We need to implement it in a similar way.
If implemented correctly, "Save As Copy" should work like this:
Simulator.Screen.Recording.-.iPhone.17.-.2025-12-09.at.11.23.25.mov
| } | ||
|
|
||
| const preparedChat = prepareUpdateMessageInChatPayload(chat, editingMessageId, message); | ||
| const preparedChat = prepareCopyEditedMessagePayload(chat, editingMessageId, message); |
There was a problem hiding this comment.
It seems that due to changes in this logic, we can no longer change the text of the user's message when pressing the "Save" button.
Simulator.Screen.Recording.-.iPhone.17.-.2025-12-15.at.10.50.17.mov
Could you please check?
There was a problem hiding this comment.
Restored this functionality
Task: https://app.clickup.com/t/24336023/PRD-2007