From 75f781f940da77db8471eaa9a39fd2aa323bc6ff Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Sat, 24 Jan 2026 21:11:50 +0200 Subject: [PATCH] fix(chat): make sendMessage calls fire-and-forget with error handling --- packages/ui/src/components/chat/ChatInput.tsx | 12 ++++----- .../ui/src/components/views/FilesView.tsx | 24 ++++++++--------- .../src/components/views/PierreDiffViewer.tsx | 26 +++++++++---------- .../views/git/PullRequestSection.tsx | 14 +++++++--- 4 files changed, 39 insertions(+), 37 deletions(-) diff --git a/packages/ui/src/components/chat/ChatInput.tsx b/packages/ui/src/components/chat/ChatInput.tsx index 9d3b37ca..8fa5cb50 100644 --- a/packages/ui/src/components/chat/ChatInput.tsx +++ b/packages/ui/src/components/chat/ChatInput.tsx @@ -494,12 +494,12 @@ export const ChatInput: React.FC = ({ onOpenSettings, scrollToBo ...additionalParts.flatMap(p => p.attachments ?? []), ]; - await sendMessage( - primaryText, - currentProviderId, - currentModelId, - currentAgentName, - primaryAttachments, + void sendMessage( + primaryText, + currentProviderId, + currentModelId, + currentAgentName, + primaryAttachments, agentMentionName, additionalParts.length > 0 ? additionalParts : undefined, currentVariant diff --git a/packages/ui/src/components/views/FilesView.tsx b/packages/ui/src/components/views/FilesView.tsx index fe7c28b1..e2f7660e 100644 --- a/packages/ui/src/components/views/FilesView.tsx +++ b/packages/ui/src/components/views/FilesView.tsx @@ -418,20 +418,18 @@ export const FilesView: React.FC = () => { setLineSelection(null); setActiveMainTab('chat'); - try { - await sendMessage( - message, - effectiveProviderId, - effectiveModelId, - sessionAgent, - undefined, - undefined, - undefined, - effectiveVariant - ); - } catch (e) { + void sendMessage( + message, + effectiveProviderId, + effectiveModelId, + sessionAgent, + undefined, + undefined, + undefined, + effectiveVariant + ).catch((e) => { console.error('Failed to send comment', e); - } + }); }, [lineSelection, commentText, selectedFile, fileContent, currentSessionId, currentProviderId, currentModelId, currentAgentName, currentVariant, extractSelectedCode, sendMessage, setActiveMainTab, getSessionAgentSelection, getAgentModelForSession, getAgentModelVariantForSession]); const mapDirectoryEntries = React.useCallback((dirPath: string, entries: Array<{ name: string; path: string; isDirectory: boolean }>): FileNode[] => { diff --git a/packages/ui/src/components/views/PierreDiffViewer.tsx b/packages/ui/src/components/views/PierreDiffViewer.tsx index 27285c86..a2d65b9f 100644 --- a/packages/ui/src/components/views/PierreDiffViewer.tsx +++ b/packages/ui/src/components/views/PierreDiffViewer.tsx @@ -277,20 +277,18 @@ export const PierreDiffViewer: React.FC = ({ setSelection(null); setActiveMainTab('chat'); - try { - await sendMessage( - message, - effectiveProviderId, - effectiveModelId, - sessionAgent, - undefined, - undefined, - undefined, - effectiveVariant - ); - } catch (e) { - console.error("Failed to send comment", e); - } + void sendMessage( + message, + effectiveProviderId, + effectiveModelId, + sessionAgent, + undefined, + undefined, + undefined, + effectiveVariant + ).catch((e) => { + console.error('Failed to send comment', e); + }); }, [selection, commentText, original, modified, fileName, language, sendMessage, currentSessionId, currentProviderId, currentModelId, currentAgentName, currentVariant, setActiveMainTab, getSessionAgentSelection, getAgentModelForSession, getAgentModelVariantForSession]); ensureFlexokiThemesRegistered(); diff --git a/packages/ui/src/components/views/git/PullRequestSection.tsx b/packages/ui/src/components/views/git/PullRequestSection.tsx index f56c4227..0a942536 100644 --- a/packages/ui/src/components/views/git/PullRequestSection.tsx +++ b/packages/ui/src/components/views/git/PullRequestSection.tsx @@ -244,7 +244,7 @@ export const PullRequestSection: React.FC<{ failedChecks: failed, }, null, 2)}`; - await useMessageStore.getState().sendMessage( + void useMessageStore.getState().sendMessage( visibleText, providerID, modelID, @@ -257,7 +257,10 @@ export const PullRequestSection: React.FC<{ { text: payloadText, synthetic: true }, ], currentVariant - ); + ).catch((e) => { + const message = e instanceof Error ? e.message : String(e); + toast.error('Failed to send message', { description: message }); + }); } catch (e) { const message = e instanceof Error ? e.message : String(e); toast.error('Failed to load checks', { description: message }); @@ -309,7 +312,7 @@ export const PullRequestSection: React.FC<{ reviewComments, }, null, 2)}`; - await useMessageStore.getState().sendMessage( + void useMessageStore.getState().sendMessage( visibleText, providerID, modelID, @@ -322,7 +325,10 @@ export const PullRequestSection: React.FC<{ { text: payloadText, synthetic: true }, ], currentVariant - ); + ).catch((e) => { + const message = e instanceof Error ? e.message : String(e); + toast.error('Failed to send message', { description: message }); + }); } catch (e) { const message = e instanceof Error ? e.message : String(e); toast.error('Failed to load PR comments', { description: message });