1- import { useCallback , useEffect , useRef , useState } from 'react'
1+ import { useCallback , useEffect , useRef } from 'react'
2+ import { useQueueStore } from '../state/queue-store'
23
34export type StreamStatus = 'idle' | 'waiting' | 'streaming'
45
@@ -7,17 +8,28 @@ export const useMessageQueue = (
78 isChainInProgressRef : React . MutableRefObject < boolean > ,
89 activeAgentStreamsRef : React . MutableRefObject < number > ,
910) => {
10- const [ queuedMessages , setQueuedMessages ] = useState < string [ ] > ( [ ] )
11- const [ streamStatus , setStreamStatus ] = useState < StreamStatus > ( 'idle' )
12- const [ canProcessQueue , setCanProcessQueue ] = useState < boolean > ( true )
13- const [ queuePaused , setQueuePaused ] = useState < boolean > ( false )
11+ const {
12+ queuedMessages,
13+ streamStatus,
14+ canProcessQueue,
15+ queuePaused,
16+ addToQueue : addToQueueStore ,
17+ clearQueue : clearQueueStore ,
18+ pauseQueue : pauseQueueStore ,
19+ resumeQueue : resumeQueueStore ,
20+ setStreamStatus,
21+ setCanProcessQueue,
22+ startStreaming : startStreamingStore ,
23+ stopStreaming : stopStreamingStore ,
24+ } = useQueueStore ( )
1425
1526 const queuedMessagesRef = useRef < string [ ] > ( [ ] )
1627 const streamTimeoutRef = useRef < ReturnType < typeof setTimeout > | null > ( null )
1728 const streamIntervalRef = useRef < ReturnType < typeof setInterval > | null > ( null )
1829 const streamMessageIdRef = useRef < string | null > ( null )
1930 const isQueuePausedRef = useRef < boolean > ( false )
2031
32+ // Sync refs with store state
2133 useEffect ( ( ) => {
2234 queuedMessagesRef . current = queuedMessages
2335 } , [ queuedMessages ] )
@@ -60,7 +72,7 @@ export const useMessageQueue = (
6072 const nextMessage = queuedList [ 0 ]
6173 const remainingMessages = queuedList . slice ( 1 )
6274 queuedMessagesRef . current = remainingMessages
63- setQueuedMessages ( remainingMessages )
75+ useQueueStore . setState ( { queuedMessages : remainingMessages } )
6476 sendMessage ( nextMessage )
6577 } , 100 )
6678
@@ -74,38 +86,36 @@ export const useMessageQueue = (
7486 activeAgentStreamsRef ,
7587 ] )
7688
77- const addToQueue = useCallback ( ( message : string ) => {
78- const newQueue = [ ...queuedMessagesRef . current , message ]
79- queuedMessagesRef . current = newQueue
80- setQueuedMessages ( newQueue )
81- } , [ ] )
89+ const addToQueue = useCallback (
90+ ( message : string ) => {
91+ const newQueue = [ ...queuedMessagesRef . current , message ]
92+ queuedMessagesRef . current = newQueue
93+ addToQueueStore ( message )
94+ } ,
95+ [ addToQueueStore ] ,
96+ )
8297
8398 const pauseQueue = useCallback ( ( ) => {
84- setQueuePaused ( true )
85- setCanProcessQueue ( false )
86- } , [ ] )
99+ pauseQueueStore ( )
100+ } , [ pauseQueueStore ] )
87101
88102 const resumeQueue = useCallback ( ( ) => {
89- setQueuePaused ( false )
90- setCanProcessQueue ( true )
91- } , [ ] )
103+ resumeQueueStore ( )
104+ } , [ resumeQueueStore ] )
92105
93106 const clearQueue = useCallback ( ( ) => {
94107 const current = queuedMessagesRef . current
95108 queuedMessagesRef . current = [ ]
96- setQueuedMessages ( [ ] )
97- return current
98- } , [ ] )
109+ return clearQueueStore ( )
110+ } , [ clearQueueStore ] )
99111
100112 const startStreaming = useCallback ( ( ) => {
101- setStreamStatus ( 'streaming' )
102- setCanProcessQueue ( false )
103- } , [ ] )
113+ startStreamingStore ( )
114+ } , [ startStreamingStore ] )
104115
105116 const stopStreaming = useCallback ( ( ) => {
106- setStreamStatus ( 'idle' )
107- setCanProcessQueue ( ! queuePaused )
108- } , [ queuePaused ] )
117+ stopStreamingStore ( )
118+ } , [ stopStreamingStore ] )
109119
110120 return {
111121 queuedMessages,
0 commit comments