diff --git a/lib/pangea/chat_settings/models/bot_options_model.dart b/lib/pangea/chat_settings/models/bot_options_model.dart index e21f141b9..d8670dbab 100644 --- a/lib/pangea/chat_settings/models/bot_options_model.dart +++ b/lib/pangea/chat_settings/models/bot_options_model.dart @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:fluffychat/pangea/chat_settings/constants/bot_mode.dart'; import 'package:fluffychat/pangea/common/constants/model_keys.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; +import 'package:fluffychat/pangea/learning_settings/gender_enum.dart'; import 'package:fluffychat/pangea/learning_settings/language_level_type_enum.dart'; class BotOptionsModel { @@ -23,6 +24,7 @@ class BotOptionsModel { final String? textAdventureGameMasterInstructions; final String? targetLanguage; final String? targetVoice; + final GenderEnum targetGender; const BotOptionsModel({ //////////////////////////////////////////////////////////////////////////// @@ -35,6 +37,7 @@ class BotOptionsModel { this.mode = BotMode.discussion, this.targetLanguage, this.targetVoice, + this.targetGender = GenderEnum.unselected, //////////////////////////////////////////////////////////////////////////// // Discussion Mode Options @@ -73,6 +76,12 @@ class BotOptionsModel { mode: json[ModelKey.mode] ?? BotMode.discussion, targetLanguage: json[ModelKey.targetLanguage], targetVoice: json[ModelKey.targetVoice], + targetGender: json[ModelKey.targetGender] != null + ? GenderEnum.values.firstWhere( + (g) => g.name == json[ModelKey.targetGender], + orElse: () => GenderEnum.unselected, + ) + : GenderEnum.unselected, ////////////////////////////////////////////////////////////////////////// // Discussion Mode Options @@ -121,6 +130,7 @@ class BotOptionsModel { data[ModelKey.customTriggerReactionKey] = customTriggerReactionKey ?? "⏩"; data[ModelKey.textAdventureGameMasterInstructions] = textAdventureGameMasterInstructions; + data[ModelKey.targetGender] = targetGender.name; return data; } catch (e, s) { debugger(when: kDebugMode); @@ -149,6 +159,7 @@ class BotOptionsModel { String? textAdventureGameMasterInstructions, String? targetLanguage, String? targetVoice, + GenderEnum? targetGender, }) { return BotOptionsModel( languageLevel: languageLevel ?? this.languageLevel, @@ -172,6 +183,7 @@ class BotOptionsModel { this.textAdventureGameMasterInstructions, targetLanguage: targetLanguage ?? this.targetLanguage, targetVoice: targetVoice ?? this.targetVoice, + targetGender: targetGender ?? this.targetGender, ); } } diff --git a/lib/pangea/chat_settings/utils/bot_client_extension.dart b/lib/pangea/chat_settings/utils/bot_client_extension.dart index 69c9b84cc..6ae38cb56 100644 --- a/lib/pangea/chat_settings/utils/bot_client_extension.dart +++ b/lib/pangea/chat_settings/utils/bot_client_extension.dart @@ -59,10 +59,12 @@ extension BotClientExtension on Client { final targetLanguage = userSettings.targetLanguage; final languageLevel = userSettings.cefrLevel; final voice = userSettings.voice; + final gender = userSettings.gender; if (botOptions.targetLanguage == targetLanguage && botOptions.languageLevel == languageLevel && - botOptions.targetVoice == voice) { + botOptions.targetVoice == voice && + botOptions.targetGender == gender) { continue; } @@ -70,6 +72,7 @@ extension BotClientExtension on Client { targetLanguage: targetLanguage, languageLevel: languageLevel, targetVoice: voice, + targetGender: gender, ); futures.add(targetBotRoom.setBotOptions(updated)); } diff --git a/lib/pangea/common/constants/model_keys.dart b/lib/pangea/common/constants/model_keys.dart index d248e680e..84b69e97b 100644 --- a/lib/pangea/common/constants/model_keys.dart +++ b/lib/pangea/common/constants/model_keys.dart @@ -132,6 +132,7 @@ class ModelKey { static const String targetLanguage = "target_language"; static const String sourceLanguage = "source_language"; static const String targetVoice = "target_voice"; + static const String targetGender = "users_genders"; static const String prevEventId = "prev_event_id"; static const String prevLastUpdated = "prev_last_updated";