Skip to content

Commit 8e367a5

Browse files
Brazold3xvn
andauthored
fix(llc): tweaked sfu events handling (#679)
* tweaked sfu events handling * naming tweaks --------- Co-authored-by: Deven Joshi <[email protected]>
1 parent 8483d64 commit 8e367a5

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

packages/stream_video/lib/src/call/session/call_session.dart

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff 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) {

0 commit comments

Comments
 (0)