setRoomMediaPolicy function

Future<HeadlessActionResult> setRoomMediaPolicy(
  1. MediasfuParameters parameters, {
  2. String? audio,
  3. String? video,
  4. String? screenshare,
  5. String? chat,
})

Implementation

Future<HeadlessActionResult> setRoomMediaPolicy(
  MediasfuParameters parameters, {
  String? audio,
  String? video,
  String? screenshare,
  String? chat,
}) async {
  if (parameters.islevel != '2') {
    return const HeadlessActionResult.failure(
        'Only the host can change room settings.');
  }
  if (parameters.socket == null) {
    return const HeadlessActionResult.failure(
        'The room connection is not ready yet.');
  }
  for (final value in <String?>[audio, video, screenshare, chat]) {
    if (value != null && !_policyValues.contains(value)) {
      return HeadlessActionResult.failure(
          'Unsupported room policy value: $value');
    }
  }
  try {
    await modifySettings(ModifySettingsOptions(
      showAlert: parameters.showAlert,
      roomName: parameters.roomName,
      audioSet: audio ?? parameters.audioSetting,
      videoSet: video ?? parameters.videoSetting,
      screenshareSet: screenshare ?? parameters.screenshareSetting,
      chatSet: chat ?? parameters.chatSetting,
      socket: parameters.socket,
      updateAudioSetting: parameters.updateAudioSetting,
      updateVideoSetting: parameters.updateVideoSetting,
      updateScreenshareSetting: parameters.updateScreenshareSetting,
      updateChatSetting: parameters.updateChatSetting,
      updateIsSettingsModalVisible: parameters.updateIsSettingsModalVisible,
    ));
    return const HeadlessActionResult.success();
  } catch (error) {
    return HeadlessActionResult.failure(
        'The room settings could not be updated: $error');
  }
}