refactor(language levels): Removed Language Levels class converted it… (#1580)
* refactor(language levels): Removed Language Levels class converted it to it's own enum file * refactor(lanugage levels): cleaned up code by removing unused varible and setting initial values to class instances * refactor(language level): Fixed some loose ends to explicitly take a LanguageLevelTypeEnum * refactor(language level): implemented changes after testing. --------- Co-authored-by: ggurdin <ggurdin@gmail.com>
This commit is contained in:
parent
cb98328adf
commit
2754bff62e
15 changed files with 165 additions and 85 deletions
|
|
@ -1,11 +1,12 @@
|
|||
import 'package:fluffychat/pangea/activity_planner/media_enum.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
|
||||
class ActivityPlanRequest {
|
||||
final String topic;
|
||||
final String mode;
|
||||
final String objective;
|
||||
final MediaEnum media;
|
||||
final int cefrLevel;
|
||||
final LanguageLevelTypeEnum cefrLevel;
|
||||
final String languageOfInstructions;
|
||||
final String targetLanguage;
|
||||
final int count;
|
||||
|
|
@ -29,7 +30,7 @@ class ActivityPlanRequest {
|
|||
'mode': mode,
|
||||
'objective': objective,
|
||||
'media': media.string,
|
||||
'cefr_level': cefrLanguageLevel,
|
||||
'cefr_level': cefrLevel,
|
||||
'language_of_instructions': languageOfInstructions,
|
||||
'target_language': targetLanguage,
|
||||
'count': count,
|
||||
|
|
@ -38,28 +39,28 @@ class ActivityPlanRequest {
|
|||
}
|
||||
|
||||
factory ActivityPlanRequest.fromJson(Map<String, dynamic> json) {
|
||||
int cefrLevel = 0;
|
||||
LanguageLevelTypeEnum cefrLevel = LanguageLevelTypeEnum.a1;
|
||||
switch (json['cefr_level']) {
|
||||
case 'Pre-A1':
|
||||
cefrLevel = 0;
|
||||
cefrLevel = LanguageLevelTypeEnum.preA1;
|
||||
break;
|
||||
case 'A1':
|
||||
cefrLevel = 1;
|
||||
cefrLevel = LanguageLevelTypeEnum.a1;
|
||||
break;
|
||||
case 'A2':
|
||||
cefrLevel = 2;
|
||||
cefrLevel = LanguageLevelTypeEnum.a2;
|
||||
break;
|
||||
case 'B1':
|
||||
cefrLevel = 3;
|
||||
cefrLevel = LanguageLevelTypeEnum.b1;
|
||||
break;
|
||||
case 'B2':
|
||||
cefrLevel = 4;
|
||||
cefrLevel = LanguageLevelTypeEnum.b2;
|
||||
break;
|
||||
case 'C1':
|
||||
cefrLevel = 5;
|
||||
cefrLevel = LanguageLevelTypeEnum.c1;
|
||||
break;
|
||||
case 'C2':
|
||||
cefrLevel = 6;
|
||||
cefrLevel = LanguageLevelTypeEnum.c2;
|
||||
break;
|
||||
}
|
||||
return ActivityPlanRequest(
|
||||
|
|
@ -77,25 +78,4 @@ class ActivityPlanRequest {
|
|||
|
||||
String get storageKey =>
|
||||
'$topic-$mode-$objective-${media.string}-$cefrLevel-$languageOfInstructions-$targetLanguage-$numberOfParticipants';
|
||||
|
||||
String get cefrLanguageLevel {
|
||||
switch (cefrLevel) {
|
||||
case 0:
|
||||
return 'Pre-A1';
|
||||
case 1:
|
||||
return 'A1';
|
||||
case 2:
|
||||
return 'A2';
|
||||
case 3:
|
||||
return 'B1';
|
||||
case 4:
|
||||
return 'B2';
|
||||
case 5:
|
||||
return 'C1';
|
||||
case 6:
|
||||
return 'C2';
|
||||
default:
|
||||
return 'Pre-A1';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import 'package:fluffychat/pangea/chat_settings/widgets/language_level_dropdown.
|
|||
import 'package:fluffychat/pangea/instructions/instructions_enum.dart';
|
||||
import 'package:fluffychat/pangea/instructions/instructions_inline_tooltip.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/constants/language_constants.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/widgets/p_language_dropdown.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
|
||||
|
|
@ -48,7 +49,7 @@ class ActivityPlannerPageState extends State<ActivityPlannerPage> {
|
|||
MediaEnum _selectedMedia = MediaEnum.nan;
|
||||
String? _selectedLanguageOfInstructions;
|
||||
String? _selectedTargetLanguage;
|
||||
int? _selectedCefrLevel;
|
||||
LanguageLevelTypeEnum? _selectedCefrLevel;
|
||||
int? _selectedNumberOfParticipants;
|
||||
|
||||
List<String> activities = [];
|
||||
|
|
@ -67,7 +68,7 @@ class ActivityPlannerPageState extends State<ActivityPlannerPage> {
|
|||
MatrixState.pangeaController.languageController.userL1?.langCode;
|
||||
_selectedTargetLanguage =
|
||||
MatrixState.pangeaController.languageController.userL2?.langCode;
|
||||
_selectedCefrLevel = 0;
|
||||
_selectedCefrLevel = LanguageLevelTypeEnum.a1;
|
||||
_selectedNumberOfParticipants = max(room?.getParticipants().length ?? 1, 1);
|
||||
}
|
||||
|
||||
|
|
@ -278,7 +279,7 @@ class ActivityPlannerPageState extends State<ActivityPlannerPage> {
|
|||
),
|
||||
const SizedBox(height: 24),
|
||||
LanguageLevelDropdown(
|
||||
initialLevel: 0,
|
||||
initialLevel: _selectedCefrLevel,
|
||||
onChanged: (val) => _selectedCefrLevel = val,
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
|
|
|
|||
|
|
@ -8,9 +8,10 @@ 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/events/constants/pangea_event_types.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
|
||||
class BotOptionsModel {
|
||||
int? languageLevel;
|
||||
LanguageLevelTypeEnum languageLevel;
|
||||
String topic;
|
||||
List<String> keywords;
|
||||
bool safetyModeration;
|
||||
|
|
@ -30,7 +31,7 @@ class BotOptionsModel {
|
|||
////////////////////////////////////////////////////////////////////////////
|
||||
// General Bot Options
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
this.languageLevel,
|
||||
this.languageLevel = LanguageLevelTypeEnum.a1,
|
||||
this.topic = "General Conversation",
|
||||
this.keywords = const [],
|
||||
this.safetyModeration = true,
|
||||
|
|
@ -65,10 +66,12 @@ class BotOptionsModel {
|
|||
// General Bot Options
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
languageLevel: json[ModelKey.languageLevel] is int
|
||||
? json[ModelKey.languageLevel]
|
||||
: json[ModelKey] == "PREA1"
|
||||
? 0
|
||||
: null,
|
||||
? LanguageLevelTypeEnumExtension.fromInt(json[ModelKey.languageLevel])
|
||||
: json[ModelKey.languageLevel] is String
|
||||
? LanguageLevelTypeEnumExtension.fromString(
|
||||
json[ModelKey.languageLevel],
|
||||
)
|
||||
: LanguageLevelTypeEnum.a1,
|
||||
safetyModeration: json[ModelKey.safetyModeration] ?? true,
|
||||
mode: json[ModelKey.mode] ?? BotMode.discussion,
|
||||
targetLanguage: json[ModelKey.targetLanguage],
|
||||
|
|
@ -104,7 +107,7 @@ class BotOptionsModel {
|
|||
final data = <String, dynamic>{};
|
||||
try {
|
||||
// data[ModelKey.isConversationBotChat] = isConversationBotChat;
|
||||
data[ModelKey.languageLevel] = languageLevel;
|
||||
data[ModelKey.languageLevel] = languageLevel.storageInt;
|
||||
data[ModelKey.safetyModeration] = safetyModeration;
|
||||
data[ModelKey.mode] = mode;
|
||||
data[ModelKey.targetLanguage] = targetLanguage;
|
||||
|
|
|
|||
|
|
@ -2,26 +2,29 @@ import 'package:flutter/material.dart';
|
|||
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
|
||||
class LanguageLevelTextPicker {
|
||||
static String languageLevelText(BuildContext context, int languageLevel) {
|
||||
static String languageLevelText(
|
||||
BuildContext context,
|
||||
LanguageLevelTypeEnum languageLevel,
|
||||
) {
|
||||
final L10n copy = L10n.of(context);
|
||||
switch (languageLevel) {
|
||||
case 0:
|
||||
case LanguageLevelTypeEnum.preA1:
|
||||
return copy.languageLevelPreA1;
|
||||
case 1:
|
||||
case LanguageLevelTypeEnum.a1:
|
||||
return copy.languageLevelA1;
|
||||
case 2:
|
||||
case LanguageLevelTypeEnum.a2:
|
||||
return copy.languageLevelA2;
|
||||
case 3:
|
||||
case LanguageLevelTypeEnum.b1:
|
||||
return copy.languageLevelB1;
|
||||
case 4:
|
||||
case LanguageLevelTypeEnum.b2:
|
||||
return copy.languageLevelB2;
|
||||
case 5:
|
||||
case LanguageLevelTypeEnum.c1:
|
||||
return copy.languageLevelC1;
|
||||
case 6:
|
||||
case LanguageLevelTypeEnum.c2:
|
||||
return copy.languageLevelC2;
|
||||
default:
|
||||
return "undefined level";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import 'package:fluffychat/pangea/common/utils/error_handler.dart';
|
|||
import 'package:fluffychat/pangea/common/widgets/full_width_dialog.dart';
|
||||
import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart';
|
||||
import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
|
||||
class ConversationBotSettings extends StatefulWidget {
|
||||
|
|
@ -168,8 +169,8 @@ class ConversationBotSettingsDialogState
|
|||
setState(() => botOptions.targetVoice = voice);
|
||||
}
|
||||
|
||||
void onUpdateBotLanguageLevel(int? level) {
|
||||
setState(() => botOptions.languageLevel = level);
|
||||
void onUpdateBotLanguageLevel(LanguageLevelTypeEnum? level) {
|
||||
setState(() => botOptions.languageLevel = level!);
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:fluffychat/pangea/chat_settings/widgets/conversation_bot/convers
|
|||
import 'package:fluffychat/pangea/chat_settings/widgets/conversation_bot/conversation_bot_mode_select.dart';
|
||||
import 'package:fluffychat/pangea/chat_settings/widgets/conversation_bot/conversation_bot_no_permission_dialog.dart';
|
||||
import 'package:fluffychat/pangea/chat_settings/widgets/language_level_dropdown.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
|
||||
class ConversationBotSettingsForm extends StatelessWidget {
|
||||
|
|
@ -24,7 +25,7 @@ class ConversationBotSettingsForm extends StatelessWidget {
|
|||
final void Function(String?) onUpdateBotMode;
|
||||
final void Function(String?) onUpdateBotLanguage;
|
||||
final void Function(String?) onUpdateBotVoice;
|
||||
final void Function(int?) onUpdateBotLanguageLevel;
|
||||
final void Function(LanguageLevelTypeEnum?) onUpdateBotLanguageLevel;
|
||||
|
||||
const ConversationBotSettingsForm({
|
||||
super.key,
|
||||
|
|
@ -92,8 +93,10 @@ class ConversationBotSettingsForm extends StatelessWidget {
|
|||
onTap: hasPermission ? null : () => showNoPermissionDialog(context),
|
||||
child: LanguageLevelDropdown(
|
||||
initialLevel: botOptions.languageLevel,
|
||||
onChanged:
|
||||
hasPermission && enabled ? onUpdateBotLanguageLevel : null,
|
||||
onChanged: hasPermission && enabled
|
||||
? (value) =>
|
||||
onUpdateBotLanguageLevel(value as LanguageLevelTypeEnum?)
|
||||
: null,
|
||||
validator: (value) => enabled && value == null
|
||||
? L10n.of(context).enterLanguageLevel
|
||||
: null,
|
||||
|
|
|
|||
|
|
@ -4,17 +4,17 @@ import 'package:dropdown_button2/dropdown_button2.dart';
|
|||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
|
||||
import 'package:fluffychat/pangea/chat_settings/utils/language_level_copy.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/constants/language_constants.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
|
||||
class LanguageLevelDropdown extends StatelessWidget {
|
||||
final int? initialLevel;
|
||||
final void Function(int?)? onChanged;
|
||||
final String? Function(int?)? validator;
|
||||
final LanguageLevelTypeEnum? initialLevel;
|
||||
final Function(LanguageLevelTypeEnum)? onChanged;
|
||||
final FormFieldValidator<Object>? validator;
|
||||
final bool enabled;
|
||||
|
||||
const LanguageLevelDropdown({
|
||||
super.key,
|
||||
this.initialLevel,
|
||||
this.initialLevel = LanguageLevelTypeEnum.a1,
|
||||
this.onChanged,
|
||||
this.validator,
|
||||
this.enabled = true,
|
||||
|
|
@ -22,7 +22,7 @@ class LanguageLevelDropdown extends StatelessWidget {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return DropdownButtonFormField2(
|
||||
return DropdownButtonFormField2<LanguageLevelTypeEnum>(
|
||||
decoration: InputDecoration(labelText: L10n.of(context).cefrLevelLabel),
|
||||
hint: Text(
|
||||
L10n.of(context).selectLanguageLevel,
|
||||
|
|
@ -30,7 +30,8 @@ class LanguageLevelDropdown extends StatelessWidget {
|
|||
textAlign: TextAlign.center,
|
||||
),
|
||||
value: initialLevel,
|
||||
items: LanguageLevelType.allInts.map((int levelOption) {
|
||||
items:
|
||||
LanguageLevelTypeEnum.values.map((LanguageLevelTypeEnum levelOption) {
|
||||
return DropdownMenuItem(
|
||||
value: levelOption,
|
||||
child: Text(
|
||||
|
|
@ -43,7 +44,9 @@ class LanguageLevelDropdown extends StatelessWidget {
|
|||
),
|
||||
);
|
||||
}).toList(),
|
||||
onChanged: enabled ? onChanged : null,
|
||||
onChanged: enabled
|
||||
? (value) => onChanged?.call(value as LanguageLevelTypeEnum)
|
||||
: null,
|
||||
validator: validator,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import 'package:http/http.dart' as http;
|
|||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
|
||||
import 'package:fluffychat/pangea/common/constants/model_keys.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
|
||||
class Requests {
|
||||
|
|
@ -25,7 +26,7 @@ class Requests {
|
|||
required Map<dynamic, dynamic> body,
|
||||
}) async {
|
||||
body[ModelKey.cefrLevel] = MatrixState
|
||||
.pangeaController.userController.profile.userSettings.cefrLevel;
|
||||
.pangeaController.userController.profile.userSettings.cefrLevel.string;
|
||||
|
||||
dynamic encoded;
|
||||
encoded = jsonEncode(body);
|
||||
|
|
@ -47,7 +48,7 @@ class Requests {
|
|||
required Map<dynamic, dynamic> body,
|
||||
}) async {
|
||||
body[ModelKey.cefrLevel] = MatrixState
|
||||
.pangeaController.userController.profile.userSettings.cefrLevel;
|
||||
.pangeaController.userController.profile.userSettings.cefrLevel.string;
|
||||
|
||||
dynamic encoded;
|
||||
encoded = jsonEncode(body);
|
||||
|
|
|
|||
|
|
@ -7,10 +7,6 @@ class LanguageKeys {
|
|||
static const multiLanguage = "multi";
|
||||
}
|
||||
|
||||
class LanguageLevelType {
|
||||
static List<int> get allInts => [0, 1, 2, 3, 4, 5, 6];
|
||||
}
|
||||
|
||||
class PrefKey {
|
||||
static const lastFetched = 'p_lang_lastfetched';
|
||||
static const flags = 'p_lang_flag';
|
||||
|
|
|
|||
|
|
@ -0,0 +1,86 @@
|
|||
enum LanguageLevelTypeEnum { preA1, a1, a2, b1, b2, c1, c2 }
|
||||
|
||||
extension LanguageLevelTypeEnumExtension on LanguageLevelTypeEnum {
|
||||
// Makes enum a string
|
||||
String get string {
|
||||
switch (this) {
|
||||
case LanguageLevelTypeEnum.preA1:
|
||||
return 'Pre-A1';
|
||||
case LanguageLevelTypeEnum.a1:
|
||||
return 'A1';
|
||||
case LanguageLevelTypeEnum.a2:
|
||||
return 'A2';
|
||||
case LanguageLevelTypeEnum.b1:
|
||||
return 'B1';
|
||||
case LanguageLevelTypeEnum.b2:
|
||||
return 'B2';
|
||||
case LanguageLevelTypeEnum.c1:
|
||||
return 'C1';
|
||||
case LanguageLevelTypeEnum.c2:
|
||||
return 'C2';
|
||||
}
|
||||
}
|
||||
|
||||
// Makes enum an int
|
||||
int get storageInt {
|
||||
switch (this) {
|
||||
case LanguageLevelTypeEnum.preA1:
|
||||
return 0;
|
||||
case LanguageLevelTypeEnum.a1:
|
||||
return 1;
|
||||
case LanguageLevelTypeEnum.a2:
|
||||
return 2;
|
||||
case LanguageLevelTypeEnum.b1:
|
||||
return 3;
|
||||
case LanguageLevelTypeEnum.b2:
|
||||
return 4;
|
||||
case LanguageLevelTypeEnum.c1:
|
||||
return 5;
|
||||
case LanguageLevelTypeEnum.c2:
|
||||
return 6;
|
||||
}
|
||||
}
|
||||
|
||||
static LanguageLevelTypeEnum fromInt(int? value) {
|
||||
switch (value) {
|
||||
case 0:
|
||||
return LanguageLevelTypeEnum.preA1;
|
||||
case 1:
|
||||
return LanguageLevelTypeEnum.a1;
|
||||
case 2:
|
||||
return LanguageLevelTypeEnum.a2;
|
||||
case 3:
|
||||
return LanguageLevelTypeEnum.b1;
|
||||
case 4:
|
||||
return LanguageLevelTypeEnum.b2;
|
||||
case 5:
|
||||
return LanguageLevelTypeEnum.c1;
|
||||
case 6:
|
||||
return LanguageLevelTypeEnum.c2;
|
||||
default:
|
||||
return LanguageLevelTypeEnum.a1;
|
||||
}
|
||||
}
|
||||
|
||||
static LanguageLevelTypeEnum fromString(String? value) {
|
||||
switch (value) {
|
||||
case 'PREA1':
|
||||
case 'Pre-A1':
|
||||
return LanguageLevelTypeEnum.preA1;
|
||||
case 'A1':
|
||||
return LanguageLevelTypeEnum.a1;
|
||||
case 'A2':
|
||||
return LanguageLevelTypeEnum.a2;
|
||||
case 'B1':
|
||||
return LanguageLevelTypeEnum.b1;
|
||||
case 'B2':
|
||||
return LanguageLevelTypeEnum.b2;
|
||||
case 'C1':
|
||||
return LanguageLevelTypeEnum.c1;
|
||||
case 'C2':
|
||||
return LanguageLevelTypeEnum.c2;
|
||||
default:
|
||||
return LanguageLevelTypeEnum.a1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:country_picker/country_picker.dart';
|
||||
|
||||
import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/pages/settings_learning_view.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/widgets/p_language_dialog.dart';
|
||||
import 'package:fluffychat/pangea/spaces/models/space_model.dart';
|
||||
|
|
@ -44,10 +45,10 @@ class SettingsLearningController extends State<SettingsLearning> {
|
|||
setState(() {});
|
||||
}
|
||||
|
||||
void setCefrLevel(int? cefrLevel) {
|
||||
void setCefrLevel(LanguageLevelTypeEnum? cefrLevel) {
|
||||
pangeaController.userController.updateProfile(
|
||||
(profile) {
|
||||
profile.userSettings.cefrLevel = cefrLevel;
|
||||
profile.userSettings.cefrLevel = cefrLevel ?? LanguageLevelTypeEnum.a1;
|
||||
return profile;
|
||||
},
|
||||
);
|
||||
|
|
@ -106,7 +107,7 @@ class SettingsLearningController extends State<SettingsLearning> {
|
|||
bool get publicProfile =>
|
||||
pangeaController.userController.profile.userSettings.publicProfile;
|
||||
|
||||
int? get cefrLevel =>
|
||||
LanguageLevelTypeEnum get cefrLevel =>
|
||||
pangeaController.userController.profile.userSettings.cefrLevel;
|
||||
|
||||
@override
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import 'package:matrix/matrix.dart';
|
|||
import 'package:fluffychat/pangea/common/constants/local.key.dart';
|
||||
import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart';
|
||||
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/models/language_model.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/utils/language_list_util.dart';
|
||||
import 'package:fluffychat/pangea/login/pages/user_settings_view.dart';
|
||||
|
|
@ -28,7 +29,7 @@ class UserSettingsState extends State<UserSettingsPage> {
|
|||
PangeaController get _pangeaController => MatrixState.pangeaController;
|
||||
|
||||
LanguageModel? selectedTargetLanguage;
|
||||
int selectedCefrLevel = 0;
|
||||
LanguageLevelTypeEnum selectedCefrLevel = LanguageLevelTypeEnum.a1;
|
||||
|
||||
String? selectedLanguageError;
|
||||
String? profileCreationError;
|
||||
|
|
@ -98,9 +99,9 @@ class UserSettingsState extends State<UserSettingsPage> {
|
|||
});
|
||||
}
|
||||
|
||||
void setSelectedCefrLevel(int? cefrLevel) {
|
||||
void setSelectedCefrLevel(LanguageLevelTypeEnum? cefrLevel) {
|
||||
setState(() {
|
||||
selectedCefrLevel = cefrLevel ?? 0;
|
||||
selectedCefrLevel = cefrLevel ?? LanguageLevelTypeEnum.a1;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ class UserSettingsView extends StatelessWidget {
|
|||
padding: const EdgeInsets.all(8),
|
||||
child: LanguageLevelDropdown(
|
||||
onChanged: controller.setSelectedCefrLevel,
|
||||
initialLevel: controller.selectedCefrLevel ?? 0,
|
||||
initialLevel: controller.selectedCefrLevel,
|
||||
),
|
||||
),
|
||||
if (controller.isSSOSignup)
|
||||
|
|
|
|||
|
|
@ -16,14 +16,12 @@ class LanguageSettingsModel {
|
|||
String? city;
|
||||
String? country;
|
||||
String? schoolName;
|
||||
int? languageLevel;
|
||||
String dominantLanguage;
|
||||
String targetLanguage;
|
||||
|
||||
LanguageSettingsModel({
|
||||
this.dominantLanguage = SpaceConstants.defaultDominantLanguage,
|
||||
this.targetLanguage = SpaceConstants.defaultTargetLanguage,
|
||||
this.languageLevel,
|
||||
this.city,
|
||||
this.country,
|
||||
this.schoolName,
|
||||
|
|
@ -39,7 +37,6 @@ class LanguageSettingsModel {
|
|||
targetLanguage: LanguageModel.codeFromNameOrCode(
|
||||
json['target_language'] ?? LanguageKeys.unknownLanguage,
|
||||
),
|
||||
languageLevel: json['language_level'],
|
||||
schoolName: json['school_name'],
|
||||
);
|
||||
}
|
||||
|
|
@ -53,7 +50,6 @@ class LanguageSettingsModel {
|
|||
data['dominant_language'] = dominantLanguage;
|
||||
//check for and do "english" => en and "spanish" => es
|
||||
data['target_language'] = targetLanguage;
|
||||
data['language_level'] = languageLevel;
|
||||
data['school_name'] = schoolName;
|
||||
return data;
|
||||
} catch (e, s) {
|
||||
|
|
|
|||
|
|
@ -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/enums/language_level_type_enum.dart';
|
||||
import 'package:fluffychat/pangea/spaces/models/space_model.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
import '../../learning_settings/models/language_model.dart';
|
||||
|
|
@ -19,7 +20,7 @@ class UserSettings {
|
|||
String? sourceLanguage;
|
||||
String? country;
|
||||
bool? hasJoinedHelpSpace;
|
||||
int? cefrLevel;
|
||||
LanguageLevelTypeEnum cefrLevel;
|
||||
|
||||
UserSettings({
|
||||
this.dateOfBirth,
|
||||
|
|
@ -32,7 +33,7 @@ class UserSettings {
|
|||
this.sourceLanguage,
|
||||
this.country,
|
||||
this.hasJoinedHelpSpace,
|
||||
this.cefrLevel,
|
||||
this.cefrLevel = LanguageLevelTypeEnum.a1,
|
||||
});
|
||||
|
||||
factory UserSettings.fromJson(Map<String, dynamic> json) => UserSettings(
|
||||
|
|
@ -50,7 +51,11 @@ class UserSettings {
|
|||
sourceLanguage: json[ModelKey.l1LanguageKey],
|
||||
country: json[ModelKey.userCountry],
|
||||
hasJoinedHelpSpace: json[ModelKey.hasJoinedHelpSpace],
|
||||
cefrLevel: json[ModelKey.cefrLevel],
|
||||
cefrLevel: json[ModelKey.cefrLevel] is String
|
||||
? LanguageLevelTypeEnumExtension.fromString(
|
||||
json[ModelKey.cefrLevel],
|
||||
)
|
||||
: LanguageLevelTypeEnum.a1,
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
|
|
@ -65,7 +70,7 @@ class UserSettings {
|
|||
data[ModelKey.l1LanguageKey] = sourceLanguage;
|
||||
data[ModelKey.userCountry] = country;
|
||||
data[ModelKey.hasJoinedHelpSpace] = hasJoinedHelpSpace;
|
||||
data[ModelKey.cefrLevel] = cefrLevel;
|
||||
data[ModelKey.cefrLevel] = cefrLevel.string;
|
||||
return data;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue