diff --git a/src/lib/components/notes/NoteEditor/Chat.svelte b/src/lib/components/notes/NoteEditor/Chat.svelte index 6ec00aa08c..25d42817a0 100644 --- a/src/lib/components/notes/NoteEditor/Chat.svelte +++ b/src/lib/components/notes/NoteEditor/Chat.svelte @@ -64,6 +64,19 @@ return; } + let responseMessage; + if (messages.at(-1)?.role === 'assistant') { + responseMessage = messages.at(-1); + } else { + responseMessage = { + role: 'assistant', + content: '', + done: false + }; + messages.push(responseMessage); + messages = messages; + } + const [res, controller] = await chatCompletion( localStorage.token, { @@ -82,18 +95,6 @@ `${WEBUI_BASE_URL}/api` ); - let responseMessage; - if (messages.at(-1)?.role === 'assistant') { - responseMessage = messages.at(-1); - } else { - responseMessage = { - role: 'assistant', - content: '' - }; - messages.push(responseMessage); - messages = messages; - } - await tick(); const textareaElement = document.getElementById(`assistant-${messages.length - 1}-textarea`); @@ -128,12 +129,16 @@ if (responseMessage.content == '' && data.choices[0].delta.content == '\n') { continue; } else { - textareaElement.style.height = textareaElement.scrollHeight + 'px'; + if (textareaElement) { + textareaElement.style.height = textareaElement.scrollHeight + 'px'; + } responseMessage.content += data.choices[0].delta.content ?? ''; messages = messages; - textareaElement.style.height = textareaElement.scrollHeight + 'px'; + if (textareaElement) { + textareaElement.style.height = textareaElement.scrollHeight + 'px'; + } await tick(); } @@ -163,9 +168,9 @@ loading = true; await chatCompletionHandler(); - - messages = messages.filter((message) => { - return message.content !== ''; + messages = messages.map((message) => { + message.done = true; + return message; }); loading = false; diff --git a/src/lib/components/notes/NoteEditor/Chat/Message.svelte b/src/lib/components/notes/NoteEditor/Chat/Message.svelte index b7ca0cf20a..1b0c50531c 100644 --- a/src/lib/components/notes/NoteEditor/Chat/Message.svelte +++ b/src/lib/components/notes/NoteEditor/Chat/Message.svelte @@ -3,6 +3,8 @@ const i18n = getContext('i18n'); + import Skeleton from '$lib/components/chat/Messages/Skeleton.svelte'; + export let message; export let idx; @@ -11,8 +13,10 @@ let textAreaElement: HTMLTextAreaElement; onMount(() => { - textAreaElement.style.height = ''; - textAreaElement.style.height = textAreaElement.scrollHeight + 'px'; + if (textAreaElement) { + textAreaElement.style.height = ''; + textAreaElement.style.height = textAreaElement.scrollHeight + 'px'; + } }); @@ -50,25 +54,32 @@