dispose method
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();
}