refac: reassign grandchildren of deleted message as children of parent message

This commit is contained in:
Danny Liu 2024-03-04 12:34:14 -08:00
parent 2250387382
commit 8c01197483

View File

@ -224,15 +224,35 @@
}; };
const messageDeleteHandler = async (messageId) => { const messageDeleteHandler = async (messageId) => {
const messageParentId = history.messages[messageId]?.parentId; const messageToDelete = history.messages[messageId];
const messageParentId = messageToDelete.parentId;
const messageChildrenIds = messageToDelete.childrenIds ?? [];
if (messageParentId !== null) { messageChildrenIds.forEach((childId) => {
history.messages[messageParentId].childrenIds = [] const child = history.messages[childId];
} if (child && child.childrenIds) {
if (child.childrenIds.length == 0) { // if last prompt/response pair
history.messages[messageParentId].childrenIds = []
history.currentId = messageParentId;
}
else {
child.childrenIds.forEach((grandChildId) => {
if (history.messages[grandChildId]) {
history.messages[grandChildId].parentId = messageParentId;
history.messages[messageParentId].childrenIds.push(grandChildId);
}
});
}
}
history.currentId = messageParentId; // remove response
history.messages[messageParentId].childrenIds = history.messages[messageParentId].childrenIds
.filter((id) => id !== childId);
});
await tick(); // remove prompt
history.messages[messageParentId].childrenIds = history.messages[messageParentId].childrenIds
.filter((id) => id !== messageId);
await updateChatById(localStorage.token, chatId, { await updateChatById(localStorage.token, chatId, {
messages: messages, messages: messages,