diff --git a/src/lib/components/studio/chat/chat.svelte b/src/lib/components/studio/chat/chat.svelte index 6955bb734..373828872 100644 --- a/src/lib/components/studio/chat/chat.svelte +++ b/src/lib/components/studio/chat/chat.svelte @@ -4,7 +4,8 @@ IconArrowUp, IconChevronDown, IconChevronLeft, - IconPaperClip + IconPaperClip, + IconStop } from '@appwrite.io/pink-icons-svelte'; import { isSmallViewport } from '$lib/stores/viewport'; import Conversation from './conversation.svelte'; @@ -38,7 +39,8 @@ }; const onsubmit: EventHandler = (event) => { event.preventDefault(); - createMessage(); + if (sending) controller.abort(); + else createMessage(); }; $effect(() => { @@ -48,8 +50,11 @@ } }); + let controller: AbortController; + async function createMessage() { try { + controller = new AbortController(); sending = true; const response = await fetch( `${sdk.forProject.client.config.endpoint}/imagine/artifacts/${$conversation.data.artifactId}/conversations/${$conversation.data.$id}/messages`, @@ -64,7 +69,8 @@ body: JSON.stringify({ content: message, type: 'text' - }) + }), + signal: controller.signal } ); @@ -93,7 +99,6 @@ if (error instanceof Error) { parser.chunk(error.message, 'error'); } - console.error(error); } finally { sending = false; } @@ -140,7 +145,6 @@ alignItems={minimizeChat ? 'center' : 'flex-end'}>