11import { useCallback , useEffect , useRef , useState } from 'react' ;
2- import { webSocketService , StreamMessage } from '../services/WebSocketService' ;
2+ import { webSocketService } from '@/services' ;
3+ import { StreamMessage } from '../models' ;
34
45export interface WebSocketState {
56 isConnected : boolean ;
@@ -15,7 +16,7 @@ export const useWebSocket = () => {
1516 isReconnecting : false ,
1617 error : null
1718 } ) ;
18-
19+
1920 const isConnectedRef = useRef ( false ) ;
2021 const isConnectingRef = useRef ( false ) ;
2122 const lastSessionIdRef = useRef < string | null > ( null ) ;
@@ -32,54 +33,54 @@ export const useWebSocket = () => {
3233
3334 const connectWebSocket = useCallback ( async ( sessionId : string , processId ?: string ) => {
3435 if ( isConnectedRef . current || isConnectingRef . current ) return ;
35-
36+
3637 setIsConnecting ( true ) ;
3738 lastSessionIdRef . current = sessionId ;
3839 lastProcessIdRef . current = processId ;
39-
40+
4041 try {
4142 await webSocketService . connect ( sessionId , processId ) ;
4243 isConnectedRef . current = true ;
43- setState ( prev => ( {
44- ...prev ,
45- isConnected : true ,
46- isConnecting : false ,
47- error : null
44+ setState ( prev => ( {
45+ ...prev ,
46+ isConnected : true ,
47+ isConnecting : false ,
48+ error : null
4849 } ) ) ;
4950 } catch ( error ) {
5051 console . error ( 'Failed to connect to WebSocket:' , error ) ;
5152 isConnectedRef . current = false ;
5253 isConnectingRef . current = false ;
53- setState ( prev => ( {
54- ...prev ,
55- isConnected : false ,
56- isConnecting : false ,
57- error : 'Failed to connect to server'
54+ setState ( prev => ( {
55+ ...prev ,
56+ isConnected : false ,
57+ isConnecting : false ,
58+ error : 'Failed to connect to server'
5859 } ) ) ;
5960 }
6061 } , [ setIsConnecting ] ) ;
6162
6263 const reconnect = useCallback ( async ( ) => {
6364 if ( ! lastSessionIdRef . current ) return ;
64-
65+
6566 setIsReconnecting ( true ) ;
6667 try {
6768 await webSocketService . connect ( lastSessionIdRef . current , lastProcessIdRef . current ) ;
6869 isConnectedRef . current = true ;
69- setState ( prev => ( {
70- ...prev ,
71- isConnected : true ,
72- isReconnecting : false ,
73- error : null
70+ setState ( prev => ( {
71+ ...prev ,
72+ isConnected : true ,
73+ isReconnecting : false ,
74+ error : null
7475 } ) ) ;
7576 } catch ( error ) {
7677 console . error ( 'Failed to reconnect to WebSocket:' , error ) ;
7778 isConnectedRef . current = false ;
78- setState ( prev => ( {
79- ...prev ,
80- isConnected : false ,
81- isReconnecting : false ,
82- error : 'Failed to reconnect to server'
79+ setState ( prev => ( {
80+ ...prev ,
81+ isConnected : false ,
82+ isReconnecting : false ,
83+ error : 'Failed to reconnect to server'
8384 } ) ) ;
8485 }
8586 } , [ setIsReconnecting ] ) ;
@@ -88,11 +89,11 @@ export const useWebSocket = () => {
8889 webSocketService . disconnect ( ) ;
8990 isConnectedRef . current = false ;
9091 isConnectingRef . current = false ;
91- setState ( prev => ( {
92- ...prev ,
93- isConnected : false ,
94- isConnecting : false ,
95- isReconnecting : false
92+ setState ( prev => ( {
93+ ...prev ,
94+ isConnected : false ,
95+ isConnecting : false ,
96+ isReconnecting : false
9697 } ) ) ;
9798 } , [ ] ) ;
9899
@@ -102,8 +103,8 @@ export const useWebSocket = () => {
102103 if ( message . data ?. connected !== undefined ) {
103104 const connected = message . data . connected ;
104105 isConnectedRef . current = connected ;
105- setState ( prev => ( {
106- ...prev ,
106+ setState ( prev => ( {
107+ ...prev ,
107108 isConnected : connected ,
108109 isConnecting : false ,
109110 isReconnecting : false ,
@@ -115,10 +116,10 @@ export const useWebSocket = () => {
115116 // Set up error listener
116117 const unsubscribeError = webSocketService . on ( 'error' , ( message : StreamMessage ) => {
117118 isConnectedRef . current = false ;
118- setState ( prev => ( {
119- ...prev ,
119+ setState ( prev => ( {
120+ ...prev ,
120121 isConnected : false ,
121- error : message . data ?. error || 'WebSocket error occurred'
122+ error : message . data ?. error || 'WebSocket error occurred'
122123 } ) ) ;
123124 } ) ;
124125
0 commit comments