Room constructor

Room({
  1. required String meetingId,
  2. required String token,
  3. required String participantId,
  4. required String displayName,
  5. required bool micEnabled,
  6. required bool camEnabled,
  7. required String maxResolution,
  8. required bool multiStream,
  9. required CustomTrack? customCameraVideoTrack,
  10. required CustomTrack? customMicrophoneAudioTrack,
  11. required NotificationInfo notification,
  12. required Mode mode,
  13. required Map<String, dynamic> metaData,
  14. int defaultCameraIndex = 0,
})

Implementation

Room({
  required String meetingId,
  required String token,
  required String participantId,
  required String displayName,
  required bool micEnabled,
  required bool camEnabled,
  required String maxResolution,
  required bool multiStream,
  required CustomTrack? customCameraVideoTrack,
  required CustomTrack? customMicrophoneAudioTrack,
  required NotificationInfo notification,
  required Mode mode,
  required Map<String, dynamic> metaData,
  int defaultCameraIndex = 0,
}) {
  //
  id = meetingId;
  //
  _token = token;
  //
  _displayName = displayName;
  //
  _micEnabled = micEnabled;
  //
  _camEnabled = camEnabled;
  //
  _maxResolution = maxResolution;
  //
  _notification = notification;
  //
  _multiStream = multiStream;
  //
  _customCameraVideoTrack = customCameraVideoTrack;
  //
  _customMicrophoneAudioTrack = customMicrophoneAudioTrack;

  _mode = mode;
  if (mode == Mode.CONFERENCE) {
    _produce = true;
    _consume = true;
  } else {
    _produce = false;
    _consume = false;
  }

  _metaData = metaData;

  //
  localParticipant = Participant(
      id: participantId,
      displayName: displayName,
      isLocal: true,
      pinState: ParticipantPinState(),
      mode: _mode,
      eventEmitter: _eventEmitter,
      enablePeerMic: _enablePeerMic,
      disablePeerMic: _disablePeerMic,
      enablePeerCamera: _enablePeerCamera,
      disablePeerCamera: _disablePeerCamera,
      removePeer: _removePeer,
      setConsumerQuality: setConsumerQuality,
      setViewPort: setViewPort,
      getStats: _getStats,
      participantPinStateChanged: _participantPinStateChange,
      metaData: _metaData);

  //
  pubSub = PubSub(
    pubsubPublish: _pubsubPublish,
    pubsubSubscribe: _pubsubSubscribe,
    pubsubUnsubscribe: _pubsubUnsubscribe,
    topicEventEmitter: _topicEventEmitter,
  );

  //
  getDefaultDevices(defaultCameraIndex);

  //
  _eventEmitter.on("peers-bloc-participant-joined", (Peer newPeer) {
    final newParticipant = Participant(
      id: newPeer.id,
      displayName: newPeer.displayName,
      isLocal: false,
      mode: newPeer.mode,
      pinState: ParticipantPinState(),
      eventEmitter: _eventEmitter,
      enablePeerMic: _enablePeerMic,
      disablePeerMic: _disablePeerMic,
      enablePeerCamera: _enablePeerCamera,
      disablePeerCamera: _disablePeerCamera,
      removePeer: _removePeer,
      setConsumerQuality: setConsumerQuality,
      setViewPort: setViewPort,
      getStats: _getStats,
      participantPinStateChanged: _participantPinStateChange,
      metaData: newPeer.metaData,
    );
    participants[newPeer.id] = newParticipant;
    _eventEmitter.emit('participant-joined', newParticipant);
  });

  //
  _eventEmitter.on("peers-bloc-participant-left", (peerId) {
    participants.remove(peerId);
    _eventEmitter.emit('participant-left', peerId);

    videoSDKTelemetery?.traceAutoComplete(
        spanName: 'Emitted `PARTICIPANT_LEFT` Event');
  });

  //
  _eventEmitter.on("pubsub-message", _handlePubSubMessage);

  //
  _eventEmitter.on("peers-bloc-presenter-changed", (peerId) {
    _activePresenterId = peerId;
    _eventEmitter.emit("presenter-changed", peerId);
    videoSDKTelemetery!
        .traceAutoComplete(spanName: 'Emitted `PRESENTER-CHANGED` Event');
  });

  _metricsCollector = VideoSDKMetrics(VideoSDKMetricsConfig(
      eventEmitter: _eventEmitter,
      name: "RoomMetrics",
      roomId: meetingId,
      peerId: participantId));
}