@@ -10,17 +10,13 @@ import { useAgent } from './useAgent';
1010import { TrackReferenceOrPlaceholder , TrackReferencePlaceholder } from '@livekit/components-core' ;
1111import { useLocalParticipant } from './useLocalParticipant' ;
1212
13- /** State representing the current connection status to the server hosted agent */
14- // FIXME: maybe just make this ConnectionState?
15- export type AgentSessionConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'signalReconnecting' ;
16-
1713export enum ConversationEvent {
1814 ConnectionStateChanged = 'connectionStateChanged' ,
1915 MediaDevicesError = 'MediaDevicesError' ,
2016}
2117
2218export type ConversationCallbacks = {
23- [ ConversationEvent . ConnectionStateChanged ] : ( newAgentConnectionState : AgentSessionConnectionState ) => void ;
19+ [ ConversationEvent . ConnectionStateChanged ] : ( newAgentConnectionState : ConnectionState ) => void ;
2420 [ ConversationEvent . MediaDevicesError ] : ( error : Error ) => void ;
2521} ;
2622
@@ -73,7 +69,7 @@ type ConversationStateCommon = {
7369} ;
7470
7571type ConversationStateConnecting = ConversationStateCommon & {
76- connectionState : "connecting" ;
72+ connectionState : ConnectionState . Connecting ;
7773 isConnected : false ;
7874 isReconnecting : false ;
7975
@@ -84,7 +80,7 @@ type ConversationStateConnecting = ConversationStateCommon & {
8480} ;
8581
8682type ConversationStateConnected = ConversationStateCommon & {
87- connectionState : "connected" | "reconnecting" | "signalReconnecting" ;
83+ connectionState : ConnectionState . Connected | ConnectionState . Reconnecting | ConnectionState . SignalReconnecting ;
8884 isConnected : true ;
8985 isReconnecting : boolean ;
9086
@@ -95,7 +91,7 @@ type ConversationStateConnected = ConversationStateCommon & {
9591} ;
9692
9793type ConversationStateDisconnected = ConversationStateCommon & {
98- connectionState : "disconnected" ;
94+ connectionState : ConnectionState . Disconnected ;
9995 isConnected : false ;
10096 isReconnecting : false ;
10197
@@ -149,20 +145,20 @@ export function useConversationWith(agentToDispatch: string | RoomAgentDispatch
149145 } ;
150146 } , [ options . tokenSource ] ) ;
151147
152- const generateDerivedConnectionStateValues = < ConnectionState extends ConversationInstance [ "connectionState" ] > ( connectionState : ConnectionState ) => ( {
148+ const generateDerivedConnectionStateValues = useCallback ( < State extends ConversationInstance [ "connectionState" ] > ( connectionState : State ) => ( {
153149 isConnected : (
154- connectionState === 'connected' ||
155- connectionState === 'reconnecting' ||
156- connectionState === 'signalReconnecting'
150+ connectionState === ConnectionState . Connected ||
151+ connectionState === ConnectionState . Reconnecting ||
152+ connectionState === ConnectionState . SignalReconnecting
157153 ) ,
158154 isReconnecting : (
159- connectionState === 'reconnecting' ||
160- connectionState === 'signalReconnecting'
155+ connectionState === ConnectionState . Reconnecting ||
156+ connectionState === ConnectionState . SignalReconnecting
161157 ) ,
162158 } as {
163- isConnected : ConnectionState extends 'connected' | 'reconnecting' | 'signalReconnecting' ? true : false ,
164- isReconnecting : ConnectionState extends 'reconnecting' | 'signalReconnecting' ? true : false ,
165- } ) ;
159+ isConnected : State extends ConnectionState . Connected | ConnectionState . Reconnecting | ConnectionState . SignalReconnecting ? true : false ,
160+ isReconnecting : State extends ConnectionState . Reconnecting | ConnectionState . SignalReconnecting ? true : false ,
161+ } ) , [ ] ) ;
166162
167163 const [ roomConnectionState , setRoomConnectionState ] = useState ( room . state ) ;
168164 useEffect ( ( ) => {
@@ -214,8 +210,8 @@ export function useConversationWith(agentToDispatch: string | RoomAgentDispatch
214210 return {
215211 ...common ,
216212
217- connectionState : 'connecting' ,
218- ...generateDerivedConnectionStateValues ( 'connecting' ) ,
213+ connectionState : ConnectionState . Connecting ,
214+ ...generateDerivedConnectionStateValues ( ConnectionState . Connecting ) ,
219215
220216 local : {
221217 camera : { participant : localParticipant , source : Track . Source . Camera } ,
@@ -251,7 +247,16 @@ export function useConversationWith(agentToDispatch: string | RoomAgentDispatch
251247 } ,
252248 } ;
253249 }
254- } , [ options . tokenSource , room , emitter , roomConnectionState , localParticipant , localCamera , localMicrophone ] ) ;
250+ } , [
251+ options . tokenSource ,
252+ room ,
253+ emitter ,
254+ roomConnectionState ,
255+ localParticipant ,
256+ localCamera ,
257+ localMicrophone ,
258+ generateDerivedConnectionStateValues ,
259+ ] ) ;
255260 useEffect ( ( ) => {
256261 emitter . emit ( ConversationEvent . ConnectionStateChanged , conversationState . connectionState ) ;
257262 } , [ emitter , conversationState . connectionState ] ) ;
0 commit comments