Timothy J. Baek 1 year ago
parent
commit
a9d74b669e
1 changed files with 16 additions and 34 deletions
  1. 16 34
      src/lib/components/chat/Messages.svelte

+ 16 - 34
src/lib/components/chat/Messages.svelte

@@ -224,42 +224,24 @@
 	};
 
 	const messageDeleteHandler = async (messageId) => {
-		const messageToDelete = history.messages[messageId];
-		const messageParentId = messageToDelete.parentId;
-		const messageChildrenIds = messageToDelete.childrenIds ?? [];
-
-		const hasSibling = messageChildrenIds.some(childId => history.messages[childId]?.childrenIds?.length > 0);
-
-		messageChildrenIds.forEach((childId) => {
-			const child = history.messages[childId];
-			if (child && child.childrenIds) {
-				if (child.childrenIds.length === 0 && !hasSibling) { // 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);
-						}
-					});
-				}
-			}
-
-			// remove response
-			history.messages[messageParentId].childrenIds = history.messages[messageParentId].childrenIds
-				.filter((id) => id !== childId);
-		});
+		const message = history.messages[messageId];
+		const parentId = message.parentId;
+		const childrenIds = message.childrenIds ?? [];
+		const grandchildrenIds = [];
+
+		// Iterate through childrenIds to find grandchildrenIds
+		for (const childId of childrenIds) {
+			const childMessage = history.messages[childId];
+			const grandChildrenIds = childMessage.childrenIds ?? [];
+			grandchildrenIds.push(...grandChildrenIds);
+		}
 
-		// remove prompt
-		history.messages[messageParentId].childrenIds = history.messages[messageParentId].childrenIds
-			.filter((id) => id !== messageId);
+		history.messages[parentId].childrenIds.push(...grandchildrenIds);
+		history.messages[parentId].childrenIds = history.messages[parentId].childrenIds.filter(
+			(id) => id !== messageId
+		);
 
-		await updateChatById(localStorage.token, chatId, {
-			messages: messages,
-			history: history
-		});
+		await updateChatById(localStorage.token, chatId, { messages, history });
 	};
 </script>