setTranslationPreference function
HeadlessActionResult
setTranslationPreference(
- MediasfuParameters parameters, {
- String? language,
- String? speakerId,
- 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');
}
}