refac delete logic

This commit is contained in:
Danny Liu 2024-03-02 23:23:49 -08:00
parent 6c70d0f770
commit f9f3fe5ec0
3 changed files with 64 additions and 76 deletions

View file

@ -223,32 +223,22 @@
}, 100); }, 100);
}; };
// TODO: change delete behaviour
// const deleteMessageAndDescendants = async (messageId: string) => {
// if (history.messages[messageId]) {
// history.messages[messageId].deleted = true;
// for (const childId of history.messages[messageId].childrenIds) {
// await deleteMessageAndDescendants(childId);
// }
// }
// };
// const triggerDeleteMessageRecursive = async (messageId: string) => {
// await deleteMessageAndDescendants(messageId);
// await updateChatById(localStorage.token, chatId, { history });
// await chats.set(await getChatList(localStorage.token));
// };
const messageDeleteHandler = async (messageId) => { const messageDeleteHandler = async (messageId) => {
if (history.messages[messageId]) { const messageParentId = history.messages[messageId]?.parentId;
history.messages[messageId].deleted = true;
for (const childId of history.messages[messageId].childrenIds) { if (messageParentId !== null) {
history.messages[childId].deleted = true; history.messages[messageParentId].childrenIds = []
}
} }
await updateChatById(localStorage.token, chatId, { history });
delete history.messages[messageId];
history.currentId = messageParentId;
await tick();
await updateChatById(localStorage.token, chatId, {
messages: messages,
history: history
});
}; };
</script> </script>
@ -258,57 +248,55 @@
<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 ? 'max-w-full'
? 'max-w-full' : 'max-w-3xl'} mx-auto rounded-lg group"
: 'max-w-3xl'} mx-auto rounded-lg group" >
> {#if message.role === 'user'}
{#if message.role === 'user'} <UserMessage
<UserMessage on:delete={() => messageDeleteHandler(message.id)}
on:delete={() => messageDeleteHandler(message.id)} user={$user}
user={$user} {message}
{message} isFirstMessage={messageIdx === 0}
isFirstMessage={messageIdx === 0} siblings={message.parentId !== null
siblings={message.parentId !== null ? history.messages[message.parentId]?.childrenIds ?? []
? history.messages[message.parentId]?.childrenIds ?? [] : Object.values(history.messages)
: Object.values(history.messages) .filter((message) => message.parentId === null)
.filter((message) => message.parentId === null) .map((message) => message.id) ?? []}
.map((message) => message.id) ?? []} {confirmEditMessage}
{confirmEditMessage} {showPreviousMessage}
{showPreviousMessage} {showNextMessage}
{showNextMessage} {copyToClipboard}
{copyToClipboard} />
/> {:else}
{:else} <ResponseMessage
<ResponseMessage {message}
{message} modelfiles={selectedModelfiles}
modelfiles={selectedModelfiles} siblings={history.messages[message.parentId]?.childrenIds ?? []}
siblings={history.messages[message.parentId]?.childrenIds ?? []} isLastMessage={messageIdx + 1 === messages.length}
isLastMessage={messageIdx + 1 === messages.length} {confirmEditResponseMessage}
{confirmEditResponseMessage} {showPreviousMessage}
{showPreviousMessage} {showNextMessage}
{showNextMessage} {rateMessage}
{rateMessage} {copyToClipboard}
{copyToClipboard} {continueGeneration}
{continueGeneration} {regenerateResponse}
{regenerateResponse} on:save={async (e) => {
on:save={async (e) => { console.log('save', e);
console.log('save', e);
const message = e.detail; const message = e.detail;
history.messages[message.id] = message; history.messages[message.id] = message;
await updateChatById(localStorage.token, chatId, { await updateChatById(localStorage.token, chatId, {
messages: messages, messages: messages,
history: history history: history
}); });
}} }}
/> />
{/if} {/if}
</div>
</div> </div>
{/if} </div>
{/each} {/each}
{#if bottomPadding} {#if bottomPadding}

View file

@ -342,7 +342,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) => ({
@ -550,7 +550,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) => ({

View file

@ -355,7 +355,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) => ({
@ -563,7 +563,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) => ({