MCPcopy Create free account
hub / github.com/codeaashu/claude-code / useDeferredHookMessages

Function useDeferredHookMessages

src/hooks/useDeferredHookMessages.ts:12–46  ·  view source on GitHub ↗
(
  pendingHookMessages: Promise<HookResultMessage[]> | undefined,
  setMessages: (action: React.SetStateAction<Message[]>) => void,
)

Source from the content-addressed store, hash-verified

10 * request to ensure the model always sees hook context.
11 */
12export function useDeferredHookMessages(
13 pendingHookMessages: Promise<HookResultMessage[]> | undefined,
14 setMessages: (action: React.SetStateAction<Message[]>) => void,
15): () => Promise<void> {
16 const pendingRef = useRef(pendingHookMessages ?? null)
17 const resolvedRef = useRef(!pendingHookMessages)
18
19 useEffect(() => {
20 const promise = pendingRef.current
21 if (!promise) return
22 let cancelled = false
23 promise.then(msgs => {
24 if (cancelled) return
25 resolvedRef.current = true
26 pendingRef.current = null
27 if (msgs.length > 0) {
28 setMessages(prev => [...msgs, ...prev])
29 }
30 })
31 return () => {
32 cancelled = true
33 }
34 }, [setMessages])
35
36 return useCallback(async () => {
37 if (resolvedRef.current || !pendingRef.current) return
38 const msgs = await pendingRef.current
39 if (resolvedRef.current) return
40 resolvedRef.current = true
41 pendingRef.current = null
42 if (msgs.length > 0) {
43 setMessages(prev => [...msgs, ...prev])
44 }
45 }, [setMessages])
46}
47

Callers 1

REPLFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected