From 0b5edffbf9caf1ebca4cb179129992cbbdf10793 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Thu, 12 Dec 2024 16:20:41 -0500 Subject: [PATCH] made PangeaLanguage.byLangCode nullable (#1235) --- lib/pangea/controllers/language_controller.dart | 8 ++++---- .../controllers/language_list_controller.dart | 4 ++-- .../room_space_settings_extension.dart | 3 ++- .../user_settings/p_language_dialog.dart | 17 +++++++++-------- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/lib/pangea/controllers/language_controller.dart b/lib/pangea/controllers/language_controller.dart index 2846acd91..33b6e1331 100644 --- a/lib/pangea/controllers/language_controller.dart +++ b/lib/pangea/controllers/language_controller.dart @@ -28,7 +28,7 @@ class LanguageController { _userL1Code != LanguageKeys.unknownLanguage && _userL2Code != LanguageKeys.unknownLanguage; - LanguageModel get systemLanguage { + LanguageModel? get systemLanguage { final String systemLang = Platform.localeName.split('-').first; return PangeaLanguage.byLangCode(systemLang); } @@ -36,7 +36,7 @@ class LanguageController { String? get _userL1Code { final source = _pangeaController.userController.profile.userSettings.sourceLanguage; - return source == null || source.isEmpty ? systemLanguage.langCode : source; + return source == null || source.isEmpty ? systemLanguage?.langCode : source; } String? get _userL2Code { @@ -48,7 +48,7 @@ class LanguageController { LanguageModel? get userL1 { if (_userL1Code == null) return null; final langModel = PangeaLanguage.byLangCode(_userL1Code!); - return langModel.langCode == LanguageKeys.unknownLanguage + return langModel?.langCode == LanguageKeys.unknownLanguage ? null : langModel; } @@ -56,7 +56,7 @@ class LanguageController { LanguageModel? get userL2 { if (_userL2Code == null) return null; final langModel = PangeaLanguage.byLangCode(_userL2Code!); - return langModel.langCode == LanguageKeys.unknownLanguage + return langModel?.langCode == LanguageKeys.unknownLanguage ? null : langModel; } diff --git a/lib/pangea/controllers/language_list_controller.dart b/lib/pangea/controllers/language_list_controller.dart index 7380f3e3f..a4bb3658c 100644 --- a/lib/pangea/controllers/language_list_controller.dart +++ b/lib/pangea/controllers/language_list_controller.dart @@ -94,10 +94,10 @@ class PangeaLanguage { return flags; } - static LanguageModel byLangCode(String langCode) { + static LanguageModel? byLangCode(String langCode) { for (final element in _langList) { if (element.langCode == langCode) return element; } - return LanguageModel.unknown; + return null; } } diff --git a/lib/pangea/extensions/pangea_room_extension/room_space_settings_extension.dart b/lib/pangea/extensions/pangea_room_extension/room_space_settings_extension.dart index 60af461a2..1fb181059 100644 --- a/lib/pangea/extensions/pangea_room_extension/room_space_settings_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/room_space_settings_extension.dart @@ -125,7 +125,8 @@ extension SpaceRoomExtension on Room { langCode == LanguageKeys.unknownLanguage) { continue; } - final LanguageModel lang = PangeaLanguage.byLangCode(langCode); + final LanguageModel? lang = PangeaLanguage.byLangCode(langCode); + if (lang == null) continue; langCounts[lang] ??= 0; langCounts[lang] = langCounts[lang]! + 1; } diff --git a/lib/pangea/widgets/user_settings/p_language_dialog.dart b/lib/pangea/widgets/user_settings/p_language_dialog.dart index c7bea53f7..b9e1fb4b5 100644 --- a/lib/pangea/widgets/user_settings/p_language_dialog.dart +++ b/lib/pangea/widgets/user_settings/p_language_dialog.dart @@ -23,10 +23,10 @@ Future pLanguageDialog( //PTODO: if source language not set by user, default to languge from device settings final LanguageModel? userL1 = pangeaController.languageController.userL1; final LanguageModel? userL2 = pangeaController.languageController.userL2; - final LanguageModel systemLanguage = + final LanguageModel? systemLanguage = pangeaController.languageController.systemLanguage; - LanguageModel selectedSourceLanguage = systemLanguage; + LanguageModel? selectedSourceLanguage = systemLanguage; if (userL1 != null && userL1.langCode != LanguageKeys.unknownLanguage) { selectedSourceLanguage = userL1; } @@ -35,9 +35,9 @@ Future pLanguageDialog( if (userL2 != null && userL2.langCode != LanguageKeys.unknownLanguage) { selectedTargetLanguage = userL2; } else { - selectedTargetLanguage = selectedSourceLanguage.langCode != 'en' - ? PangeaLanguage.byLangCode('en') - : PangeaLanguage.byLangCode('es'); + selectedTargetLanguage = selectedSourceLanguage?.langCode != 'en' + ? PangeaLanguage.byLangCode('en')! + : PangeaLanguage.byLangCode('es')!; } return showDialog( @@ -61,7 +61,8 @@ Future pLanguageDialog( PLanguageDropdown( onChange: (p0) => setState(() => selectedSourceLanguage = p0), - initialLanguage: selectedSourceLanguage, + initialLanguage: + selectedSourceLanguage ?? LanguageModel.unknown, languages: pangeaController.pLanguageStore.baseOptions, isL2List: false, ), @@ -87,7 +88,7 @@ Future pLanguageDialog( ), TextButton( onPressed: () { - selectedSourceLanguage.langCode != + selectedSourceLanguage?.langCode != selectedTargetLanguage.langCode ? showFutureLoadingDialog( context: context, @@ -97,7 +98,7 @@ Future pLanguageDialog( .updateProfile( (profile) { profile.userSettings.sourceLanguage = - selectedSourceLanguage.langCode; + selectedSourceLanguage?.langCode; profile.userSettings.targetLanguage = selectedTargetLanguage.langCode; return profile;