Unverified Commit 20284dc6 authored by Timothy Jaeryang Baek's avatar Timothy Jaeryang Baek Committed by GitHub
Browse files

Merge pull request #1004 from dannyl1u/refac/delete-message

refac: delete message logic
parents 8fb5f547 2b016adc
...@@ -223,33 +223,80 @@ ...@@ -223,33 +223,80 @@
}, 100); }, 100);
}; };
// TODO: change delete behaviour const messageDeleteHandler = async (messageId) => {
// const deleteMessageAndDescendants = async (messageId: string) => { const messageToDelete = history.messages[messageId];
// if (history.messages[messageId]) { const messageParentId = messageToDelete.parentId;
// history.messages[messageId].deleted = true; 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);
});
// remove prompt
history.messages[messageParentId].childrenIds = history.messages[
messageParentId
].childrenIds.filter((id) => id !== messageId);
await updateChatById(localStorage.token, chatId, {
messages: messages,
history: history
});
};
// for (const childId of history.messages[messageId].childrenIds) { // const messageDeleteHandler = async (messageId) => {
// await deleteMessageAndDescendants(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 ?? [];
// for (const grandchildId of grandchildrenIds) {
// const childMessage = history.messages[grandchildId];
// childMessage.parentId = parentId;
// } // }
// grandchildrenIds.push(...grandChildrenIds);
// } // }
// };
// const triggerDeleteMessageRecursive = async (messageId: string) => { // history.messages[parentId].childrenIds.push(...grandchildrenIds);
// await deleteMessageAndDescendants(messageId); // history.messages[parentId].childrenIds = history.messages[parentId].childrenIds.filter(
// await updateChatById(localStorage.token, chatId, { history }); // (id) => id !== messageId
// await chats.set(await getChatList(localStorage.token)); // );
// };
// // Select latest message
const messageDeleteHandler = async (messageId) => { // let currentMessageId = grandchildrenIds.at(-1);
if (history.messages[messageId]) { // if (currentMessageId) {
history.messages[messageId].deleted = true; // let messageChildrenIds = history.messages[currentMessageId].childrenIds;
// while (messageChildrenIds.length !== 0) {
// currentMessageId = messageChildrenIds.at(-1);
// messageChildrenIds = history.messages[currentMessageId].childrenIds;
// }
// history.currentId = currentMessageId;
// }
for (const childId of history.messages[messageId].childrenIds) { // await updateChatById(localStorage.token, chatId, { messages, history });
history.messages[childId].deleted = true; // };
}
}
await updateChatById(localStorage.token, chatId, { history });
};
</script> </script>
{#if messages.length == 0} {#if messages.length == 0}
...@@ -258,7 +305,6 @@ ...@@ -258,7 +305,6 @@
<div class=" pb-10"> <div class=" pb-10">
{#key chatId} {#key chatId}
{#each messages as message, messageIdx} {#each messages as message, messageIdx}
{#if !message.deleted}
<div class=" w-full"> <div class=" w-full">
<div <div
class="flex flex-col justify-between px-5 mb-3 {$settings?.fullScreenMode ?? null class="flex flex-col justify-between px-5 mb-3 {$settings?.fullScreenMode ?? null
...@@ -308,7 +354,6 @@ ...@@ -308,7 +354,6 @@
{/if} {/if}
</div> </div>
</div> </div>
{/if}
{/each} {/each}
{#if bottomPadding} {#if bottomPadding}
......
...@@ -339,7 +339,7 @@ ...@@ -339,7 +339,7 @@
content: $settings.system content: $settings.system
} }
: undefined, : undefined,
...messages.filter((message) => !message.deleted) ...messages
] ]
.filter((message) => message) .filter((message) => message)
.map((message, idx, arr) => ({ .map((message, idx, arr) => ({
...@@ -547,7 +547,7 @@ ...@@ -547,7 +547,7 @@
content: $settings.system content: $settings.system
} }
: undefined, : undefined,
...messages.filter((message) => !message.deleted) ...messages
] ]
.filter((message) => message) .filter((message) => message)
.map((message, idx, arr) => ({ .map((message, idx, arr) => ({
......
...@@ -352,7 +352,7 @@ ...@@ -352,7 +352,7 @@
content: $settings.system content: $settings.system
} }
: undefined, : undefined,
...messages.filter((message) => !message.deleted) ...messages
] ]
.filter((message) => message) .filter((message) => message)
.map((message, idx, arr) => ({ .map((message, idx, arr) => ({
...@@ -560,7 +560,7 @@ ...@@ -560,7 +560,7 @@
content: $settings.system content: $settings.system
} }
: undefined, : undefined,
...messages.filter((message) => !message.deleted) ...messages
] ]
.filter((message) => message) .filter((message) => message)
.map((message, idx, arr) => ({ .map((message, idx, arr) => ({
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment