connect method

Future<void> connect({
  1. required JoinRequest request,
  2. required Function onDisconnect,
  3. required dynamic onRoomRecordingStatusChanged(
    1. bool activeRecording
    ),
  4. required dynamic onDataReceivedEvent(
    1. Map<String, dynamic>? data
    ),
  5. required dynamic onAudioPlaybackStatusChanged(
    1. bool isPlaying
    ),
  6. required dynamic onMetadataChanged(
    1. String? metadata
    ),
})

Implementation

Future<void> connect({
  required JoinRequest request,
  required Function onDisconnect,
  required Function(bool activeRecording) onRoomRecordingStatusChanged,
  required Function(Map<String, dynamic>? data) onDataReceivedEvent,
  required Function(bool isPlaying) onAudioPlaybackStatusChanged,
  required Function(String? metadata) onMetadataChanged,
}) async {
  try {
    E2EEOptions? e2eeOptions;
    if (request.e2ee && request.e2eeKey != null) {
      final keyProvider = await BaseKeyProvider.create();
      e2eeOptions = E2EEOptions(keyProvider: keyProvider);
      await keyProvider.setKey(request.e2eeKey!);
    }
    room = Room(
      roomOptions: RoomOptions(
        adaptiveStream: request.adaptiveStream,
        dynacast: request.dynacast,
        defaultAudioPublishOptions: const AudioPublishOptions(
          name: 'custom_audio_track_name',
          audioBitrate: 32000,
        ),
        e2eeOptions: e2eeOptions,
      ),
    );
    await room?.prepareConnection(request.url, request.token);
    await room?.connect(
      request.url,
      request.token,
      fastConnectOptions: FastConnectOptions(
        microphone: TrackOption(track: audioTrack),
      ),
    );
    listener = room?.createListener();
    publishStream(false);
    room?.addListener(_onRoomDidUpdate);
    _setUpListeners(
      onDisconnect: onDisconnect,
      onRoomRecordingStatusChanged: onRoomRecordingStatusChanged,
      onDataReceivedEvent: onDataReceivedEvent,
      onAudioPlaybackStatusChanged: onAudioPlaybackStatusChanged,
      onMetadataChanged: onMetadataChanged,
    );
    _sortParticipants();
    if (lkPlatformIs(PlatformType.android)) {
      Hardware.instance.setSpeakerphoneOn(true);
    }
    if (lkPlatformIs(PlatformType.iOS) && room != null) {
      ReplayKitChannel.listenMethodChannel(room!);
    }
  } catch (error) {
    log('Could not connect $error');
  }
}