setTranslationPreference function

HeadlessActionResult setTranslationPreference(
  1. MediasfuParameters parameters, {
  2. String? language,
  3. String? speakerId,
  4. bool wantOriginal = false,
})

Implementation

HeadlessActionResult setTranslationPreference(
  MediasfuParameters parameters, {
  String? language,
  String? speakerId,
  bool wantOriginal = false,
}) {
  final update = parameters.updateListenerTranslationPreferences;
  if (update == null) {
    return const HeadlessActionResult.failure(
        'Translation is not available in this room.');
  }
  try {
    final current = parameters.listenerTranslationPreferences;
    final perSpeaker = Map<String, String>.from(
        current?.perSpeaker ?? const <String, String>{});
    if (speakerId != null && speakerId.isNotEmpty) {
      if (wantOriginal || language == null || language.isEmpty) {
        perSpeaker.remove(speakerId);
      } else {
        perSpeaker[speakerId] = language;
      }
      update(ListenerTranslationPreferences(
        perSpeaker: perSpeaker,
        globalLanguage: current?.globalLanguage,
      ));
    } else {
      update(ListenerTranslationPreferences(
        perSpeaker: perSpeaker,
        globalLanguage: language,
      ));
    }
    return const HeadlessActionResult.success();
  } catch (error) {
    return HeadlessActionResult.failure(
        'The translation preference could not be set: $error');
  }
}