From 413e29bc9e86e493455ed6aa03ea0f47811f48e2 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Mon, 24 Mar 2025 18:44:25 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Correctly=20reset=20state=20when?= =?UTF-8?q?=20streaming=20fails?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2094 --- packages/embeds/js/package.json | 2 +- .../ConversationContainer/ConversationContainer.tsx | 8 ++++++++ packages/embeds/nextjs/package.json | 2 +- packages/embeds/react/package.json | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/embeds/js/package.json b/packages/embeds/js/package.json index 135b61742..baec05fb2 100644 --- a/packages/embeds/js/package.json +++ b/packages/embeds/js/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/js", - "version": "0.3.71", + "version": "0.3.72", "description": "Javascript library to display typebots on your website", "license": "FSL-1.1-ALv2", "type": "module", diff --git a/packages/embeds/js/src/components/ConversationContainer/ConversationContainer.tsx b/packages/embeds/js/src/components/ConversationContainer/ConversationContainer.tsx index b104f959d..1eebb89f9 100644 --- a/packages/embeds/js/src/components/ConversationContainer/ConversationContainer.tsx +++ b/packages/embeds/js/src/components/ConversationContainer/ConversationContainer.tsx @@ -227,6 +227,11 @@ export const ConversationContainer = (props: Props) => { }; const sendMessage = async (answer?: InputSubmitContent) => { + if (hasError() && clientSideActions().length > 0) { + setHasError(false); + await processClientSideActions(clientSideActions()); + return; + } setHasError(false); const currentInputBlock = [...chatChunks()].pop()?.input; @@ -421,6 +426,7 @@ export const ConversationContainer = (props: Props) => { }; const processClientSideActions = async (actions: ClientSideAction[]) => { + let hasStreamError = false; for (const action of actions) { if ( "streamOpenAiChatCompletion" in action || @@ -439,6 +445,7 @@ export const ConversationContainer = (props: Props) => { onMessageStream: streamMessage, onStreamError: async (error) => { setHasError(true); + hasStreamError = true; await saveLogs([error]); props.onNewLogs?.([error]); }, @@ -450,6 +457,7 @@ export const ConversationContainer = (props: Props) => { continue; } } + if (hasStreamError) return; setClientSideActions((actions) => actions.slice(1)); if (response && "logs" in response) saveLogs(response.logs); diff --git a/packages/embeds/nextjs/package.json b/packages/embeds/nextjs/package.json index ea879fc9f..5395c25de 100644 --- a/packages/embeds/nextjs/package.json +++ b/packages/embeds/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/nextjs", - "version": "0.3.71", + "version": "0.3.72", "license": "FSL-1.1-ALv2", "description": "Convenient library to display typebots on your Next.js website", "type": "module", diff --git a/packages/embeds/react/package.json b/packages/embeds/react/package.json index 948a29e9a..0da5a9dc0 100644 --- a/packages/embeds/react/package.json +++ b/packages/embeds/react/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/react", - "version": "0.3.71", + "version": "0.3.72", "description": "Convenient library to display typebots on your React app", "license": "FSL-1.1-ALv2", "type": "module",