Skip to content

Commit b2f8f3a

Browse files
committed
function rename - splice guard
1 parent 86acdba commit b2f8f3a

File tree

3 files changed

+21
-15
lines changed

3 files changed

+21
-15
lines changed

src/providers/AIConversationProvider/index.tsx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,9 @@ type AIConversationContextType = {
104104
messageId: string,
105105
updates: Partial<ConversationMessage>,
106106
) => void
107-
replaceConversationMessages: (newMessages: Array<ConversationMessage>) => void
107+
updateMessagesWithCompaction: (
108+
newMessages: Array<ConversationMessage>,
109+
) => void
108110
updateConversationName: (
109111
conversationId: ConversationId,
110112
name: string,
@@ -484,7 +486,7 @@ export const AIConversationProvider: React.FC<{
484486
[conversationMetas],
485487
)
486488

487-
const replaceConversationMessages = useCallback(
489+
const updateMessagesWithCompaction = useCallback(
488490
(newMessages: Array<ConversationMessage>) => {
489491
setActiveConversationMessages((prev) => {
490492
const conversationMessages = [...prev]
@@ -498,11 +500,14 @@ export const AIConversationProvider: React.FC<{
498500
conversationMessages[index] = message
499501
}
500502
}
501-
conversationMessages.splice(
502-
lastReplaceIndex + 1,
503-
0,
504-
newMessages[newMessages.length - 1],
505-
)
503+
// Insert the compaction summary message
504+
const lastNewMessage = newMessages[newMessages.length - 1]
505+
if (
506+
lastNewMessage &&
507+
!conversationMessages.some((m) => m.id === lastNewMessage.id)
508+
) {
509+
conversationMessages.splice(lastReplaceIndex + 1, 0, lastNewMessage)
510+
}
506511
return conversationMessages
507512
})
508513
},
@@ -621,6 +626,7 @@ export const AIConversationProvider: React.FC<{
621626
void trackEvent(ConsoleEvent.AI_CHAT_OPEN)
622627
} finally {
623628
isOpeningChatWindowRef.current = false
629+
setIsLoadingMessages(false)
624630
}
625631
},
626632
[
@@ -1049,7 +1055,7 @@ export const AIConversationProvider: React.FC<{
10491055
addMessage,
10501056
removeMessages,
10511057
updateMessage,
1052-
replaceConversationMessages,
1058+
updateMessagesWithCompaction,
10531059
updateConversationName,
10541060
acceptSuggestion,
10551061
rejectSuggestion,

src/scenes/Editor/AIChatWindow/index.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ const AIChatWindow: React.FC = () => {
213213
addMessage,
214214
removeMessages,
215215
updateMessage,
216-
replaceConversationMessages,
216+
updateMessagesWithCompaction,
217217
updateConversationName,
218218
acceptSuggestion,
219219
rejectSuggestion,
@@ -420,7 +420,7 @@ const AIChatWindow: React.FC = () => {
420420
setIsStreaming,
421421
persistMessages,
422422
updateConversationName,
423-
replaceConversationMessages,
423+
updateMessagesWithCompaction,
424424
},
425425
)
426426
}
@@ -659,7 +659,7 @@ const AIChatWindow: React.FC = () => {
659659
setIsStreaming,
660660
persistMessages,
661661
updateConversationName,
662-
replaceConversationMessages,
662+
updateMessagesWithCompaction,
663663
}
664664

665665
switch (userMessage.displayType) {
@@ -782,7 +782,7 @@ const AIChatWindow: React.FC = () => {
782782
setIsStreaming,
783783
persistMessages,
784784
updateConversationName,
785-
replaceConversationMessages,
785+
updateMessagesWithCompaction,
786786
currentSQL,
787787
],
788788
)

src/utils/executeAIFlow.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ export type AIFlowCallbacks = {
126126
name: string,
127127
isGeneratedByAI?: boolean,
128128
) => Promise<void>
129-
replaceConversationMessages?: (messages: ConversationMessage[]) => void
129+
updateMessagesWithCompaction?: (messages: ConversationMessage[]) => void
130130
getLastRoundMessages?: (conversationId: ConversationId) => Promise<{
131131
lastUserMessage?: ConversationMessage
132132
lastAssistantMessage?: ConversationMessage
@@ -289,8 +289,8 @@ function processResult(config: ProcessResultConfig): AIFlowResult {
289289
return { success: false, error: errorMessage }
290290
}
291291

292-
if (compactedHistory && callbacks.replaceConversationMessages) {
293-
callbacks.replaceConversationMessages(compactedHistory)
292+
if (compactedHistory && callbacks.updateMessagesWithCompaction) {
293+
callbacks.updateMessagesWithCompaction(compactedHistory)
294294
}
295295

296296
const hasSQLInResult = response.sql && response.sql.trim() !== ""

0 commit comments

Comments
 (0)