Add a gender value to the user settings
This commit is contained in:
parent
abd96ffccf
commit
d1a2080304
4 changed files with 71 additions and 1 deletions
|
|
@ -4991,5 +4991,10 @@
|
|||
},
|
||||
"pickDifferentActivity": "Pick a different activity",
|
||||
"messageLanguageMismatchMessage": "Your target language doesn't match this message. Update your target language?",
|
||||
"blockLemmaConfirmation": "This vocab word will be permanently removed from your analytics"
|
||||
"blockLemmaConfirmation": "This vocab word will be permanently removed from your analytics",
|
||||
"woman": "Woman",
|
||||
"man": "Man",
|
||||
"otherGender": "Other",
|
||||
"unselectedGender": "Select a gender option",
|
||||
"gender": "Gender"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ class ModelKey {
|
|||
|
||||
static const String userL1 = "user_l1";
|
||||
static const String userL2 = "user_l2";
|
||||
static const String userGender = "user_gender";
|
||||
static const String fullText = "full_text";
|
||||
static const String fullTextLang = "full_text_lang";
|
||||
static const String tokens = "tokens";
|
||||
|
|
|
|||
52
lib/pangea/learning_settings/gender_enum.dart
Normal file
52
lib/pangea/learning_settings/gender_enum.dart
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
|
||||
enum GenderEnum {
|
||||
unselected,
|
||||
woman,
|
||||
man,
|
||||
other,
|
||||
}
|
||||
|
||||
extension GenderEnumExtension on GenderEnum {
|
||||
String get string {
|
||||
switch (this) {
|
||||
case GenderEnum.unselected:
|
||||
return 'unselected';
|
||||
case GenderEnum.woman:
|
||||
return 'woman';
|
||||
case GenderEnum.man:
|
||||
return 'man';
|
||||
case GenderEnum.other:
|
||||
return 'other';
|
||||
}
|
||||
}
|
||||
|
||||
static GenderEnum fromString(String? value) {
|
||||
switch (value) {
|
||||
case 'woman':
|
||||
return GenderEnum.woman;
|
||||
case 'man':
|
||||
return GenderEnum.man;
|
||||
case 'other':
|
||||
return GenderEnum.other;
|
||||
default:
|
||||
return GenderEnum.unselected;
|
||||
}
|
||||
}
|
||||
|
||||
String title(BuildContext context) {
|
||||
final L10n l10n = L10n.of(context);
|
||||
switch (this) {
|
||||
case GenderEnum.unselected:
|
||||
return l10n.unselectedGender;
|
||||
case GenderEnum.woman:
|
||||
return l10n.woman;
|
||||
case GenderEnum.man:
|
||||
return l10n.man;
|
||||
case GenderEnum.other:
|
||||
return l10n.otherGender;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ import 'package:matrix/matrix.dart';
|
|||
import 'package:fluffychat/pangea/common/constants/model_keys.dart';
|
||||
import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart';
|
||||
import 'package:fluffychat/pangea/instructions/instruction_settings.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/gender_enum.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/language_level_type_enum.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/tool_settings_enum.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
|
|
@ -15,6 +16,7 @@ class UserSettings {
|
|||
bool? publicProfile;
|
||||
String? targetLanguage;
|
||||
String? sourceLanguage;
|
||||
GenderEnum gender;
|
||||
String? country;
|
||||
LanguageLevelTypeEnum cefrLevel;
|
||||
|
||||
|
|
@ -24,6 +26,7 @@ class UserSettings {
|
|||
this.publicProfile,
|
||||
this.targetLanguage,
|
||||
this.sourceLanguage,
|
||||
this.gender = GenderEnum.unselected,
|
||||
this.country,
|
||||
this.cefrLevel = LanguageLevelTypeEnum.a1,
|
||||
});
|
||||
|
|
@ -38,6 +41,11 @@ class UserSettings {
|
|||
publicProfile: json[ModelKey.publicProfile],
|
||||
targetLanguage: json[ModelKey.l2LanguageKey],
|
||||
sourceLanguage: json[ModelKey.l1LanguageKey],
|
||||
gender: json[ModelKey.userGender] is String
|
||||
? GenderEnumExtension.fromString(
|
||||
json[ModelKey.userGender],
|
||||
)
|
||||
: GenderEnum.unselected,
|
||||
country: json[ModelKey.userCountry],
|
||||
cefrLevel: json[ModelKey.cefrLevel] is String
|
||||
? LanguageLevelTypeEnum.fromString(
|
||||
|
|
@ -53,6 +61,7 @@ class UserSettings {
|
|||
data[ModelKey.publicProfile] = publicProfile;
|
||||
data[ModelKey.l2LanguageKey] = targetLanguage;
|
||||
data[ModelKey.l1LanguageKey] = sourceLanguage;
|
||||
data[ModelKey.userGender] = gender.string;
|
||||
data[ModelKey.userCountry] = country;
|
||||
data[ModelKey.cefrLevel] = cefrLevel.string;
|
||||
return data;
|
||||
|
|
@ -111,6 +120,7 @@ class UserSettings {
|
|||
publicProfile: publicProfile,
|
||||
targetLanguage: targetLanguage,
|
||||
sourceLanguage: sourceLanguage,
|
||||
gender: gender,
|
||||
country: country,
|
||||
cefrLevel: cefrLevel,
|
||||
);
|
||||
|
|
@ -126,6 +136,7 @@ class UserSettings {
|
|||
(other.publicProfile ?? false) == (publicProfile ?? false) &&
|
||||
other.targetLanguage == targetLanguage &&
|
||||
other.sourceLanguage == sourceLanguage &&
|
||||
other.gender == gender &&
|
||||
other.country == country &&
|
||||
other.cefrLevel == cefrLevel;
|
||||
}
|
||||
|
|
@ -137,6 +148,7 @@ class UserSettings {
|
|||
(publicProfile ?? false).hashCode,
|
||||
targetLanguage.hashCode,
|
||||
sourceLanguage.hashCode,
|
||||
gender.hashCode,
|
||||
country.hashCode,
|
||||
cefrLevel.hashCode,
|
||||
]);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue