setParticipantMedia function

Future<HeadlessActionResult> setParticipantMedia(
  1. ModerationParameters parameters, {
  2. String id = '',
  3. String name = '',
  4. required String kind,
})

Implementation

Future<HeadlessActionResult> setParticipantMedia(
  ModerationParameters parameters, {
  String id = '',
  String name = '',
  required String kind,
}) async {
  final permissions = getModerationPermissions(parameters);
  if (!permissions.canControlMedia) {
    return const HeadlessActionResult.failure(
        'You are not allowed to control media for other participants.');
  }
  final participant = _findParticipant(parameters, id: id, name: name);
  if (participant == null) {
    return const HeadlessActionResult.failure(
        'That participant is not in the room.');
  }
  if (participant.islevel == '2') {
    return const HeadlessActionResult.failure(
        'A host’s media cannot be turned off.');
  }
  if (parameters.socket == null || parameters.roomName.isEmpty) {
    return const HeadlessActionResult.failure(
        'The room connection is not ready.');
  }
  try {
    parameters.socket!.emit('controlMedia', {
      'participantId': participant.id,
      'participantName': participant.name,
      'type': kind,
      'roomName': parameters.roomName,
    });
    return const HeadlessActionResult.success();
  } catch (error) {
    return HeadlessActionResult.failure('The media control failed: $error');
  }
}