dispose method

  1. @override
Future<void> dispose(
  1. GroupCallSession groupCall
)
override

Implementation

@override
Future<void> dispose(GroupCallSession groupCall) async {
  if (localUserMediaStream != null) {
    await _removeUserMediaStream(groupCall, localUserMediaStream!);
    _localUserMediaStream = null;
  }

  if (localScreenshareStream != null) {
    await stopMediaStream(localScreenshareStream!.stream);
    await _removeScreenshareStream(groupCall, localScreenshareStream!);
    _localScreenshareStream = null;
  }

  // removeCall removes it from `_callSessions` later.
  final callsCopy = _callSessions.toList();

  for (final call in callsCopy) {
    await _removeCall(groupCall, call, CallErrorCode.userHangup);
  }

  _activeSpeaker = null;
  _activeSpeakerLoopTimeout?.cancel();
  await _callSubscription?.cancel();
}