Participant constructor

Participant({
  1. required String id,
  2. required String displayName,
  3. required bool isLocal,
  4. required ParticipantPinState pinState,
  5. required Mode mode,
  6. required EventEmitter eventEmitter,
  7. required Function enablePeerMic,
  8. required Function disablePeerMic,
  9. required Function enablePeerCamera,
  10. required Function disablePeerCamera,
  11. required Function setConsumerQuality,
  12. required Function getStats,
  13. required Function setViewPort,
  14. required Function removePeer,
  15. required Function participantPinStateChanged,
  16. Map<String, dynamic>? metaData,
})

Implementation

Participant({
  required this.id,
  required this.displayName,
  required this.isLocal,
  required this.pinState,
  required this.mode,
  required EventEmitter eventEmitter,
  required Function enablePeerMic,
  required Function disablePeerMic,
  required Function enablePeerCamera,
  required Function disablePeerCamera,
  required Function setConsumerQuality,
  required Function getStats,
  required Function setViewPort,
  required Function removePeer,
  required Function participantPinStateChanged,
  this.metaData
}) {
  //
  _eventEmitter = eventEmitter;
  //
  _enablePeerMic = enablePeerMic;
  //
  _disablePeerMic = disablePeerMic;
  //
  _enablePeerCamera = enablePeerCamera;
  //
  _disablePeerCamera = disablePeerCamera;
  //
  _setConsumerQuality = setConsumerQuality;
  //
  _setViewPort = setViewPort;
  //
  _removePeer = removePeer;
  //
  _getStats = getStats;
  _participantPinStateChanged = participantPinStateChanged;
  //
  _participantEventEmitter = EventEmitter();
  //
  streams = {};

  // handle stream-enabled
  _eventEmitter.on(
    "stream-enabled-$id",
    (data) {
      if (data['audio'] != null) {
        final consumer = data["audio"];

        final Stream newStream = Stream(
          consumer: consumer,
        );

        _addConsumer(newStream);
      } else if (data["renderer"] != null && data["video"] != null) {
        final consumer = data["video"];
        final renderer = data["renderer"];

        final Stream newStream = Stream(
          consumer: consumer,
          renderer: renderer,
        );

        _addConsumer(newStream);
      } else if (data["shareRenderer"] != null && data["share"] != null) {
        final consumer = data["share"];
        final shareRenderer = data["shareRenderer"];

        final Stream newStream = Stream(
          consumer: consumer,
          renderer: shareRenderer,
        );

        _addConsumer(newStream);
      }
    },
  );

  // handle stream-disabled
  _eventEmitter.on(
    "stream-disabled-$id",
    (data) {
      if (data['audioConsumerId'] != null) {
        final consumerId = data['audioConsumerId'];
        _removeConsumer(consumerId);
      } else if (data["renderer"] != null &&
          data["videoConsumerId"] != null) {
        final consumerId = data['videoConsumerId'];
        _removeConsumer(consumerId);
      } else if (data["shareRenderer"] != null &&
          data["shareConsumerId"] != null) {
        final consumerId = data['shareConsumerId'];
        _removeConsumer(consumerId);
      }
    },
  );

  // handle stream-paused
  _eventEmitter.on(
    "stream-paused-$id",
    (data) {
      String audioKeyType = 'audioConsumerId';
      String videoKeyType = 'videoConsumerId';
      String shareKeyType = 'shareConsumerId';

      if (data[audioKeyType] != null) {
        _pauseConsumer(audioKeyType, data);
      } else if (data[videoKeyType] != null) {
        _pauseConsumer(videoKeyType, data);
      } else if (data[shareKeyType] != null) {
        _pauseConsumer(shareKeyType, data);
      }
    },
  );

  // handle stream-resumed
  _eventEmitter.on(
    "stream-resumed-$id",
    (data) {
      String audioKeyType = 'audioConsumerId';
      String videoKeyType = 'videoConsumerId';
      String shareKeyType = 'shareConsumerId';

      if (data[audioKeyType] != null) {
        _resumeConsumer(audioKeyType, data);
      } else if (data[videoKeyType] != null) {
        _resumeConsumer(videoKeyType, data);
      } else if (data[shareKeyType] != null) {
        _resumeConsumer(shareKeyType, data);
      }
    },
  );

  // handle quality-changed
  _eventEmitter.on(
    "quality-changed-$id",
    (data) {
      _setLayers(data['spatialLayer'], data['temporalLayer'],
          data['prevQuality'], data['currentQuality']);
    },
  );

  _eventEmitter.on("pin-state-change-$id", (data) {
    _setPinState(data['state']);
  });

  _eventEmitter.on("participant-mode-changed-$id", (data) {
    mode = ModeExtension.parseToEnum(data['mode']);
  });
}