Skip to content

Commit af7a2a8

Browse files
waleedlatif1claude
andcommitted
fix(mothership): simplify queue callbacks — drop redundant deps and guard ref
- Remove `setMessageQueue` from useCallback deps (stable setter, never changes) - Replace `sendNowProcessingRef` double-click guard with eager `messageQueueRef` update - Simplify `editQueuedMessage` with same eager-ref pattern for consistency Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent d8ad8a4 commit af7a2a8

File tree

1 file changed

+17
-27
lines changed
  • apps/sim/app/workspace/[workspaceId]/home/hooks

1 file changed

+17
-27
lines changed

apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ export function useChat(
741741
sendMessageRef.current(next.content, next.fileAttachments, next.contexts)
742742
})
743743
}
744-
}, [invalidateChatQueries, setMessageQueue])
744+
}, [invalidateChatQueries])
745745

746746
useEffect(() => {
747747
const activeStreamId = chatHistory?.activeStreamId
@@ -999,41 +999,31 @@ export function useChat(
999999
}
10001000
}, [invalidateChatQueries, persistPartialResponse, executionStream])
10011001

1002-
const removeFromQueue = useCallback(
1003-
(id: string) => {
1004-
setMessageQueue((prev) => prev.filter((m) => m.id !== id))
1005-
},
1006-
[setMessageQueue]
1007-
)
1002+
const removeFromQueue = useCallback((id: string) => {
1003+
setMessageQueue((prev) => prev.filter((m) => m.id !== id))
1004+
}, [])
10081005

1009-
const sendNowProcessingRef = useRef<string | null>(null)
10101006
const sendNow = useCallback(
10111007
async (id: string) => {
1012-
if (sendNowProcessingRef.current === id) return
10131008
const msg = messageQueueRef.current.find((m) => m.id === id)
10141009
if (!msg) return
1015-
sendNowProcessingRef.current = id
1016-
try {
1017-
await stopGeneration()
1018-
setMessageQueue((prev) => prev.filter((m) => m.id !== id))
1019-
await sendMessage(msg.content, msg.fileAttachments, msg.contexts)
1020-
} finally {
1021-
sendNowProcessingRef.current = null
1022-
}
1023-
},
1024-
[stopGeneration, sendMessage, setMessageQueue]
1025-
)
1026-
1027-
const editQueuedMessage = useCallback(
1028-
(id: string): QueuedMessage | undefined => {
1029-
const msg = messageQueueRef.current.find((m) => m.id === id)
1030-
if (!msg) return undefined
1010+
// Eagerly update ref so a rapid second click finds the message already gone
1011+
messageQueueRef.current = messageQueueRef.current.filter((m) => m.id !== id)
1012+
await stopGeneration()
10311013
setMessageQueue((prev) => prev.filter((m) => m.id !== id))
1032-
return msg
1014+
await sendMessage(msg.content, msg.fileAttachments, msg.contexts)
10331015
},
1034-
[setMessageQueue]
1016+
[stopGeneration, sendMessage]
10351017
)
10361018

1019+
const editQueuedMessage = useCallback((id: string): QueuedMessage | undefined => {
1020+
const msg = messageQueueRef.current.find((m) => m.id === id)
1021+
if (!msg) return undefined
1022+
messageQueueRef.current = messageQueueRef.current.filter((m) => m.id !== id)
1023+
setMessageQueue((prev) => prev.filter((m) => m.id !== id))
1024+
return msg
1025+
}, [])
1026+
10371027
useEffect(() => {
10381028
return () => {
10391029
streamGenRef.current++

0 commit comments

Comments
 (0)