fix the double saving of responses in the chat note

This commit is contained in:
perf3ct 2025-04-17 03:29:09 +00:00
parent e968e00c80
commit 9eec41816f
No known key found for this signature in database
GPG Key ID: 569C4EEC436F5232

View File

@ -549,8 +549,8 @@ export default class LlmChatPanel extends BasicWidget {
}
}
// Save the final state to the Chat Note after getting the response
await this.saveCurrentData();
// Note: We don't need to save here since the streaming completion and direct response methods
// both call saveCurrentData() when they're done
} catch (error) {
console.error('Error processing user message:', error);
toastService.showError('Failed to process message');
@ -903,13 +903,14 @@ export default class LlmChatPanel extends BasicWidget {
applySyntaxHighlight($(assistantMessageEl as HTMLElement));
// Update message in the data model for storage
const existingMsgIndex = this.messages.findIndex(msg =>
msg.role === 'assistant' && msg.content !== assistantResponse
);
// Find the last assistant message to update, or add a new one if none exists
const assistantMessages = this.messages.filter(msg => msg.role === 'assistant');
const lastAssistantMsgIndex = assistantMessages.length > 0 ?
this.messages.lastIndexOf(assistantMessages[assistantMessages.length - 1]) : -1;
if (existingMsgIndex >= 0) {
if (lastAssistantMsgIndex >= 0) {
// Update existing message
this.messages[existingMsgIndex].content = assistantResponse;
this.messages[lastAssistantMsgIndex].content = assistantResponse;
} else {
// Add new message
this.messages.push({