feat: save as new response message

This commit is contained in:
Timothy J. Baek 2024-09-17 23:36:48 +02:00
parent 8c273ba58a
commit 5065291f72
2 changed files with 72 additions and 19 deletions

View File

@ -108,6 +108,33 @@
await updateChatMessages(); await updateChatMessages();
}; };
const saveNewResponseMessage = async (message, content) => {
const responseMessageId = uuidv4();
const parentId = message.parentId;
const responseMessage = {
...message,
id: responseMessageId,
parentId: parentId,
childrenIds: [],
content: content,
timestamp: Math.floor(Date.now() / 1000) // Unix epoch
};
history.messages[responseMessageId] = responseMessage;
history.currentId = responseMessageId;
// Append messageId to childrenIds of parent message
if (parentId !== null) {
history.messages[parentId].childrenIds = [
...history.messages[parentId].childrenIds,
responseMessageId
];
}
await updateChatMessages();
};
const rateMessage = async (messageId, rating) => { const rateMessage = async (messageId, rating) => {
history.messages[messageId].annotation = { history.messages[messageId].annotation = {
...history.messages[messageId].annotation, ...history.messages[messageId].annotation,
@ -342,6 +369,7 @@
{readOnly} {readOnly}
{updateChatMessages} {updateChatMessages}
{confirmEditResponseMessage} {confirmEditResponseMessage}
{saveNewResponseMessage}
{showPreviousMessage} {showPreviousMessage}
{showNextMessage} {showNextMessage}
{rateMessage} {rateMessage}

View File

@ -85,6 +85,8 @@
export let updateChatMessages: Function; export let updateChatMessages: Function;
export let confirmEditResponseMessage: Function; export let confirmEditResponseMessage: Function;
export let saveNewResponseMessage: Function;
export let showPreviousMessage: Function; export let showPreviousMessage: Function;
export let showNextMessage: Function; export let showNextMessage: Function;
export let rateMessage: Function; export let rateMessage: Function;
@ -267,6 +269,15 @@
await tick(); await tick();
}; };
const saveNewMessageHandler = async () => {
saveNewResponseMessage(message, editedContent);
edit = false;
editedContent = '';
await tick();
};
const cancelEditMessage = async () => { const cancelEditMessage = async () => {
edit = false; edit = false;
editedContent = ''; editedContent = '';
@ -404,10 +415,23 @@
}} }}
/> />
<div class=" mt-2 mb-1 flex justify-end space-x-1.5 text-sm font-medium"> <div class=" mt-2 mb-1 flex justify-between text-sm font-medium">
<div>
<button <button
id="close-edit-message-button" id="close-edit-message-button"
class="px-4 py-2 bg-white hover:bg-gray-100 text-gray-800 transition rounded-3xl" class=" px-4 py-2 bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 border dark:border-gray-700 text-gray-700 dark:text-gray-200 transition rounded-3xl"
on:click={() => {
saveNewMessageHandler();
}}
>
{$i18n.t('Save New Message')}
</button>
</div>
<div class="flex space-x-1.5">
<button
id="close-edit-message-button"
class="px-4 py-2 bg-white dark:bg-gray-900 hover:bg-gray-100 text-gray-800 dark:text-gray-100 transition rounded-3xl"
on:click={() => { on:click={() => {
cancelEditMessage(); cancelEditMessage();
}} }}
@ -416,8 +440,8 @@
</button> </button>
<button <button
id="save-edit-message-button" id="confirm-edit-message-button"
class=" px-4 py-2 bg-gray-900 hover:bg-gray-850 text-gray-100 transition rounded-3xl" class=" px-4 py-2 bg-gray-900 dark:bg-white hover:bg-gray-850 text-gray-100 dark:text-gray-800 transition rounded-3xl"
on:click={() => { on:click={() => {
editMessageConfirmHandler(); editMessageConfirmHandler();
}} }}
@ -426,6 +450,7 @@
</button> </button>
</div> </div>
</div> </div>
</div>
{:else} {:else}
<div class="w-full flex flex-col"> <div class="w-full flex flex-col">
{#if message.content === '' && !message.error} {#if message.content === '' && !message.error}