File tree Expand file tree Collapse file tree 1 file changed +14
-9
lines changed
packages/stream_video/lib/src/call/session Expand file tree Collapse file tree 1 file changed +14
-9
lines changed Original file line number Diff line number Diff line change @@ -199,17 +199,22 @@ class CallSession extends Disposable {
199199 _rtcManagerSubject = BehaviorSubject ();
200200
201201 // Buffer sfu events until rtc manager is set
202- final bufferedStream =
203- sfuWS.events.asStream ().buffer (_rtcManagerSubject! );
202+ final bufferedStream = sfuWS.events
203+ .asStream ()
204+ .takeWhile ((_) => ! _rtcManagerSubject! .hasValue)
205+ .buffer (_rtcManagerSubject! )
206+ .expand ((event) => event);
207+
208+ // Delay rest of the sfu events until rtc manager is set
209+ final delayedStream = Rx .combineLatest2 (
210+ _rtcManagerSubject! ,
211+ sfuWS.events.asStream (),
212+ (_, event) => event,
213+ ).skip (1 );
204214
205215 // Handle buffered events and then listen to sfu events as normal
206- _eventsSubscription = bufferedStream.asyncExpand ((bufferedEvents) async * {
207- for (final event in bufferedEvents) {
208- await _onSfuEvent (event);
209- }
210-
211- yield * sfuWS.events.asStream ();
212- }).listen (_onSfuEvent);
216+ _eventsSubscription =
217+ bufferedStream.mergeWith ([delayedStream]).listen (_onSfuEvent);
213218
214219 final wsResult = await sfuWS.connect ();
215220 if (wsResult.isFailure) {
You can’t perform that action at this time.
0 commit comments