From 884a50560ef5b6d7e5ea154396a9e36914b594e6 Mon Sep 17 00:00:00 2001 From: dor-eitan <164745144+dor-eitan@users.noreply.github.com> Date: Sun, 25 Jan 2026 17:44:54 +0200 Subject: [PATCH 1/2] bugfix: livekit callbacks order (#290) --- .../streaming-manager/livekit-manager.ts | 40 ++++++++----------- .../streaming-manager/webrtc-manager.ts | 17 +++++++- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/services/streaming-manager/livekit-manager.ts b/src/services/streaming-manager/livekit-manager.ts index 15b4f9b2..3cd6eaed 100644 --- a/src/services/streaming-manager/livekit-manager.ts +++ b/src/services/streaming-manager/livekit-manager.ts @@ -70,11 +70,9 @@ export enum DataChannelTopic { export function handleInitError( error: unknown, log: (message?: any, ...optionalParams: any[]) => void, - callbacks: StreamingManagerOptions['callbacks'], - markInitialConnectionDone: () => void + callbacks: StreamingManagerOptions['callbacks'] ): void { log('Failed to connect to LiveKit room:', error); - markInitialConnectionDone(); callbacks.onConnectionStateChange?.(ConnectionState.Fail); callbacks.onError?.(error as Error, { sessionId: '' }); throw error; @@ -93,9 +91,10 @@ export async function createLiveKitStreamingManager { - isInitialConnection = false; - }); + handleInitError(error, log, callbacks); } if (!url || !token || !sessionId) { @@ -148,8 +145,6 @@ export async function createLiveKitStreamingManager { - isInitialConnection = false; - }); + handleInitError(error, log, callbacks); } analytics.enrich({ @@ -189,24 +180,18 @@ export async function createLiveKitStreamingManager { - callbacks.onConnectionStateChange?.(ConnectionState.Connected); - }); - } else { - callbacks.onConnectionStateChange?.(ConnectionState.Connected); - } break; case LiveKitConnectionState.Disconnected: log('LiveKit room disconnected'); isConnected = false; + hasEmittedConnected = false; callbacks.onConnectionStateChange?.(ConnectionState.Disconnected); break; case LiveKitConnectionState.Reconnecting: @@ -268,7 +253,14 @@ export async function createLiveKitStreamingManager; }) { if (statsSignal === StreamingState.Start && dataChannelSignal === StreamingState.Start) { + log('CALLBACK: onVideoStateChange(Start)'); onVideoStateChange?.(StreamingState.Start); } else if (statsSignal === StreamingState.Stop && dataChannelSignal === StreamingState.Stop) { + log('CALLBACK: onVideoStateChange(Stop)'); onVideoStateChange?.(StreamingState.Stop, report); } } @@ -82,16 +86,20 @@ function handleFluentStreamState({ onVideoStateChange, onAgentActivityStateChange, report, + log, }: { statsSignal?: StreamingState; dataChannelSignal?: StreamingState; onVideoStateChange: StreamingManagerOptions['callbacks']['onVideoStateChange']; onAgentActivityStateChange?: StreamingManagerOptions['callbacks']['onAgentActivityStateChange']; report?: VideoRTCStatsReport; + log: ReturnType; }) { if (statsSignal === StreamingState.Start) { + log('CALLBACK: onVideoStateChange(Start)'); onVideoStateChange?.(StreamingState.Start); } else if (statsSignal === StreamingState.Stop) { + log('CALLBACK: onVideoStateChange(Stop)'); onVideoStateChange?.(StreamingState.Stop, report); } @@ -109,6 +117,7 @@ function handleStreamState({ onAgentActivityStateChange, streamType, report, + log, }: { statsSignal?: StreamingState; dataChannelSignal?: StreamingState; @@ -116,9 +125,10 @@ function handleStreamState({ onAgentActivityStateChange?: StreamingManagerOptions['callbacks']['onAgentActivityStateChange']; streamType: StreamType; report?: VideoRTCStatsReport; + log: ReturnType; }) { if (streamType === StreamType.Legacy) { - handleLegacyStreamState({ statsSignal, dataChannelSignal, onVideoStateChange, report }); + handleLegacyStreamState({ statsSignal, dataChannelSignal, onVideoStateChange, report, log }); } else if (streamType === StreamType.Fluent) { handleFluentStreamState({ statsSignal, @@ -126,6 +136,7 @@ function handleStreamState({ onVideoStateChange, onAgentActivityStateChange, report, + log, }); } } @@ -182,6 +193,7 @@ export async function createWebRTCStreamingManager callbacks.onConnectivityStateChange?.(state) ); @@ -258,6 +271,7 @@ export async function createWebRTCStreamingManager { log('peerConnection.ontrack', event); + log('CALLBACK: onSrcObjectReady'); callbacks.onSrcObjectReady?.(event.streams[0]); }; From 17a01381151aa9a17b3be9ad04eb2f099f382e82 Mon Sep 17 00:00:00 2001 From: Dor Eitan Date: Sun, 25 Jan 2026 17:47:13 +0200 Subject: [PATCH 2/2] bump 1.1.32 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 72b89e21..f1488d46 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@d-id/client-sdk", "private": false, - "version": "1.1.31", + "version": "1.1.32", "type": "module", "description": "d-id client sdk", "repository": {