joinRoom method

  1. @override
Future<void> joinRoom({
  1. required String roomId,
  2. required int participantId,
  3. required ConnectionType connectionType,
})
override

Implementation

@override
Future<void> joinRoom({
  required String roomId,
  required int participantId,
  required ConnectionType connectionType,
}) async {
  _connectionType = connectionType;

  await Future.wait([
    _e2eeManager.initialize(
      roomId,
      codec: _currentCallSetting.videoConfig.preferedCodec,
      participantId: participantId.toString(),
      enabled: _currentCallSetting.e2eeEnabled,
    ),
    initializeMediaDevices(),
  ]);

  if (_mParticipant?.peerConnection == null) return;

  if (WebRTC.platformIsMobile) {
    final futures = <Future>[];
    if (WebRTC.platformIsIOS) {
      futures.add(
        Helper.setAppleAudioIOMode(
          AppleAudioIOMode.localAndRemote,
          preferSpeakerOutput: true,
        ),
      );
    }
    futures.add(toggleSpeakerOutput(forceValue: true));
    await Future.wait(futures);
  }

  if (connectionType == ConnectionType.sfu) {
    _mParticipant = await _mParticipant?.createTrackQualityChannel();
  }

  _currentRoomId = roomId;
  _currentParticipantId = participantId.toString();

  await _establishPublisher();

  _nativeService.startCallKit(roomId);
}