getTranslationState function

TranslationState getTranslationState(
  1. MediasfuParameters parameters
)

Implementation

TranslationState getTranslationState(MediasfuParameters parameters) {
  final preferences = parameters.listenerTranslationPreferences;
  final perSpeaker = (preferences?.perSpeaker ?? const <String, String>{})
      .entries
      .map((entry) => TranslationPreference(
            speakerId: entry.key,
            language: entry.value.isEmpty ? null : entry.value,
            wantOriginal: entry.value.isEmpty,
          ))
      .toList(growable: false);
  final languages = <String>{};
  final global = preferences?.globalLanguage;
  if (global != null && global.isNotEmpty) languages.add(global);
  for (final entry in perSpeaker) {
    if (entry.language != null) languages.add(entry.language!);
  }
  for (final value in parameters.speakerTranslationStates?.values ?? const []) {
    if (value is Map && value['language'] is String) {
      final language = value['language'] as String;
      if (language.isNotEmpty) languages.add(language);
    }
  }
  return TranslationState(
    globalLanguage: global,
    perSpeaker: perSpeaker,
    active: (global != null && global.isNotEmpty) ||
        perSpeaker.any((entry) => !entry.wantOriginal),
    availableLanguages: List<String>.unmodifiable(languages),
  );
}