|
1 | | -import { useCallback, useEffect, useRef, useState } from 'react' |
| 1 | +import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react' |
2 | 2 | import { createLogger } from '@sim/logger' |
3 | 3 | import { useQueryClient } from '@tanstack/react-query' |
4 | 4 | import { usePathname } from 'next/navigation' |
@@ -261,18 +261,11 @@ export function useChat( |
261 | 261 | const activeResourceIdRef = useRef(activeResourceId) |
262 | 262 | activeResourceIdRef.current = activeResourceId |
263 | 263 |
|
264 | | - const [messageQueue, setMessageQueueRaw] = useState<QueuedMessage[]>([]) |
| 264 | + const [messageQueue, setMessageQueue] = useState<QueuedMessage[]>([]) |
265 | 265 | const messageQueueRef = useRef<QueuedMessage[]>([]) |
266 | | - const setMessageQueue = useCallback( |
267 | | - (update: QueuedMessage[] | ((prev: QueuedMessage[]) => QueuedMessage[])) => { |
268 | | - setMessageQueueRaw((prev) => { |
269 | | - const next = typeof update === 'function' ? update(prev) : update |
270 | | - messageQueueRef.current = next |
271 | | - return next |
272 | | - }) |
273 | | - }, |
274 | | - [] |
275 | | - ) |
| 266 | + useEffect(() => { |
| 267 | + messageQueueRef.current = messageQueue |
| 268 | + }, [messageQueue]) |
276 | 269 |
|
277 | 270 | const sendMessageRef = useRef<UseChatReturn['sendMessage']>(async () => {}) |
278 | 271 |
|
@@ -921,7 +914,9 @@ export function useChat( |
921 | 914 | }, |
922 | 915 | [workspaceId, queryClient, processSSEStream, finalize] |
923 | 916 | ) |
924 | | - sendMessageRef.current = sendMessage |
| 917 | + useLayoutEffect(() => { |
| 918 | + sendMessageRef.current = sendMessage |
| 919 | + }) |
925 | 920 |
|
926 | 921 | const stopGeneration = useCallback(async () => { |
927 | 922 | if (sendingRef.current) { |
|
0 commit comments