@@ -10,6 +10,7 @@ import {
1010 TokenSourceFixed ,
1111 TokenSourceFetchOptions ,
1212 RoomConnectOptions ,
13+ decodeTokenPayload ,
1314} from 'livekit-client' ;
1415import { EventEmitter } from 'events' ;
1516
@@ -451,12 +452,18 @@ export function useSession(
451452 } ;
452453 signal ?. addEventListener ( 'abort' , onSignalAbort ) ;
453454
455+ let tokenDispatchesAgent = false ;
454456 await Promise . all ( [
455457 // FIXME: swap the below line in once the new `livekit-client` changes are published
456458 // room.connect(tokenSource, { tokenSourceOptions }),
457- tokenSourceFetch ( ) . then ( ( { serverUrl, participantToken } ) =>
458- room . connect ( serverUrl , participantToken , roomConnectOptions ) ,
459- ) ,
459+ tokenSourceFetch ( ) . then ( ( { serverUrl, participantToken } ) => {
460+ const participantTokenPayload = decodeTokenPayload ( participantToken ) ;
461+ const participantTokenAgentDispatchCount =
462+ participantTokenPayload . roomConfig ?. agents ?. length ?? 0 ;
463+ tokenDispatchesAgent = participantTokenAgentDispatchCount > 0 ;
464+
465+ return room . connect ( serverUrl , participantToken , roomConnectOptions ) ;
466+ } ) ,
460467
461468 // Start microphone (with preconnect buffer) by default
462469 tracks . microphone ?. enabled
@@ -469,7 +476,9 @@ export function useSession(
469476 ] ) ;
470477
471478 await waitUntilConnected ( signal ) ;
472- await agent . waitUntilAvailable ( signal ) ;
479+ if ( tokenDispatchesAgent ) {
480+ await agent . waitUntilAvailable ( signal ) ;
481+ }
473482
474483 signal ?. removeEventListener ( 'abort' , onSignalAbort ) ;
475484 } ,
0 commit comments