From 60c322091b031831039f158995837b3f9642ab92 Mon Sep 17 00:00:00 2001 From: Lars Grammel Date: Sat, 15 Feb 2025 11:06:22 +0100 Subject: [PATCH] fix (ui): set status to ready after stream was aborted (#4897) --- .changeset/quick-apricots-kick.md | 8 ++++++++ packages/react/src/use-chat.ts | 1 + packages/solid/src/use-chat.ts | 1 + packages/svelte/src/use-chat.ts | 1 + packages/vue/src/use-chat.ts | 1 + 5 files changed, 12 insertions(+) create mode 100644 .changeset/quick-apricots-kick.md diff --git a/.changeset/quick-apricots-kick.md b/.changeset/quick-apricots-kick.md new file mode 100644 index 000000000000..d78d3cbca966 --- /dev/null +++ b/.changeset/quick-apricots-kick.md @@ -0,0 +1,8 @@ +--- +'@ai-sdk/svelte': patch +'@ai-sdk/react': patch +'@ai-sdk/solid': patch +'@ai-sdk/vue': patch +--- + +fix (ui): set status to ready after stream was aborted diff --git a/packages/react/src/use-chat.ts b/packages/react/src/use-chat.ts index 6924dd9d339c..11b33b676c07 100644 --- a/packages/react/src/use-chat.ts +++ b/packages/react/src/use-chat.ts @@ -350,6 +350,7 @@ By default, it's set to 1, which means that only a single LLM call is made. // Ignore abort errors as they are expected. if ((err as any).name === 'AbortError') { abortControllerRef.current = null; + mutateStatus('ready'); return null; } diff --git a/packages/solid/src/use-chat.ts b/packages/solid/src/use-chat.ts index 78416cd973fc..0ee70d3cf092 100644 --- a/packages/solid/src/use-chat.ts +++ b/packages/solid/src/use-chat.ts @@ -341,6 +341,7 @@ export function useChat( // Ignore abort errors as they are expected. if ((err as any).name === 'AbortError') { abortController = null; + setStatus('ready'); return null; } diff --git a/packages/svelte/src/use-chat.ts b/packages/svelte/src/use-chat.ts index 7fd91ff057fa..84f0a31444e8 100644 --- a/packages/svelte/src/use-chat.ts +++ b/packages/svelte/src/use-chat.ts @@ -272,6 +272,7 @@ export function useChat({ // Ignore abort errors as they are expected. if ((err as any).name === 'AbortError') { abortController = null; + status.set('ready'); return null; } diff --git a/packages/vue/src/use-chat.ts b/packages/vue/src/use-chat.ts index 6e5c97825340..d8d4cb148a40 100644 --- a/packages/vue/src/use-chat.ts +++ b/packages/vue/src/use-chat.ts @@ -288,6 +288,7 @@ export function useChat( // Ignore abort errors as they are expected. if ((err as any).name === 'AbortError') { abortController = null; + mutateStatus(() => 'ready'); return null; }