fix(chat): make sendMessage calls fire-and-forget with error handling

This commit is contained in:
Bohdan Triapitsyn
2026-01-24 21:11:50 +02:00
parent 1720a8d6fd
commit 75f781f940
4 changed files with 39 additions and 37 deletions
@@ -494,12 +494,12 @@ export const ChatInput: React.FC<ChatInputProps> = ({ 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
+11 -13
View File
@@ -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[] => {
@@ -277,20 +277,18 @@ export const PierreDiffViewer: React.FC<PierreDiffViewerProps> = ({
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();
@@ -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 });