Skip to content

Commit fb0bc2c

Browse files
waleedlatif1claude
andcommitted
fix(chat,testing): memoize welcome message and add selectDistinct to dbChainMock.db
Why: - Welcome ChatMessage was rebuilt inline each render, producing a fresh timestamp and new array identity — cascading to ChatMessageContainer and VoiceInterface props on every tick. - dbChainMockFns exports selectDistinct/selectDistinctOn but the dbChainMock.db object omitted them, so tests that stub those builders hit undefined on the mocked module. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent f2acd79 commit fb0bc2c

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

apps/sim/app/chat/[identifier]/chat.tsx

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use client'
22

3-
import { type RefObject, useCallback, useEffect, useRef, useState } from 'react'
3+
import { type RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react'
44
import { createLogger } from '@sim/logger'
55
import { generateId } from '@sim/utils/id'
66
import { noop } from '@/lib/core/utils/request'
@@ -109,17 +109,21 @@ export default function ChatClient({ identifier }: { identifier: string }) {
109109
const chatConfig = chatConfigResult?.kind === 'config' ? chatConfigResult.config : null
110110

111111
const welcomeMessage = chatConfig?.customizations?.welcomeMessage
112-
const displayMessages: ChatMessage[] = welcomeMessage
113-
? [
114-
{
115-
id: 'welcome',
116-
content: welcomeMessage,
117-
type: 'assistant',
118-
timestamp: new Date(),
119-
isInitialMessage: true,
120-
},
121-
...messages,
122-
]
112+
const welcomeChatMessage = useMemo<ChatMessage | null>(
113+
() =>
114+
welcomeMessage
115+
? {
116+
id: 'welcome',
117+
content: welcomeMessage,
118+
type: 'assistant',
119+
timestamp: new Date(),
120+
isInitialMessage: true,
121+
}
122+
: null,
123+
[welcomeMessage]
124+
)
125+
const displayMessages: ChatMessage[] = welcomeChatMessage
126+
? [welcomeChatMessage, ...messages]
123127
: messages
124128

125129
const { isStreamingResponse, abortControllerRef, stopStreaming, handleStreamedResponse } =

packages/testing/src/mocks/database.mock.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,8 @@ export function resetDbChainMock(): void {
189189
export const dbChainMock = {
190190
db: {
191191
select,
192+
selectDistinct,
193+
selectDistinctOn,
192194
insert,
193195
update,
194196
delete: del,

0 commit comments

Comments
 (0)