Skip to content

Commit

Permalink
On a first install, try to use the same device language
Browse files Browse the repository at this point in the history
  • Loading branch information
Wolfteam committed Feb 28, 2021
1 parent ac7402d commit da6cadf
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 16 deletions.
10 changes: 10 additions & 0 deletions lib/domain/app_constants.dart
@@ -1,2 +1,12 @@
//This order matches the one in the game, and the numbers represent each image
import 'package:genshindb/domain/enums/enums.dart';

import 'models/models.dart';

const artifactOrder = [4, 2, 5, 1, 3];

final languagesMap = {
AppLanguageType.english: LanguageModel('en', 'US'),
AppLanguageType.spanish: LanguageModel('es', 'ES'),
// AppLanguageType.french: LanguageModel('fr', 'FR'),
};
18 changes: 4 additions & 14 deletions lib/infrastructure/locale_service.dart
@@ -1,3 +1,4 @@
import 'package:genshindb/domain/app_constants.dart';
import 'package:genshindb/domain/enums/enums.dart';
import 'package:genshindb/domain/extensions/string_extensions.dart';
import 'package:genshindb/domain/models/models.dart';
Expand Down Expand Up @@ -43,21 +44,10 @@ class LocaleServiceImpl implements LocaleService {

@override
LanguageModel getLocale(AppLanguageType language) {
var langCode = 'en';
var countryCode = 'US';
switch (language) {
case AppLanguageType.spanish:
langCode = 'es';
countryCode = 'ES';
break;
case AppLanguageType.french:
langCode = 'fr';
countryCode = 'FR';
break;
default:
break;
if (!languagesMap.entries.any((kvp) => kvp.key == language)) {
throw Exception('The language = $language is not a valid value');
}

return LanguageModel(langCode, countryCode);
return languagesMap.entries.firstWhere((kvp) => kvp.key == language).value;
}
}
29 changes: 27 additions & 2 deletions lib/infrastructure/settings_service.dart
@@ -1,3 +1,5 @@
import 'package:devicelocale/devicelocale.dart';
import 'package:genshindb/domain/app_constants.dart';
import 'package:genshindb/domain/enums/enums.dart';
import 'package:genshindb/domain/models/models.dart';
import 'package:genshindb/domain/services/logging_service.dart';
Expand Down Expand Up @@ -101,8 +103,7 @@ class SettingsServiceImpl extends SettingsService {
}

if (_prefs.get(_appLanguageKey) == null) {
_logger.info(runtimeType, 'Setting english as the default lang');
language = AppLanguageType.english;
language = await _getDefaultLangToUse();
}

if (_prefs.get(_showCharacterDetailsKey) == null) {
Expand All @@ -123,4 +124,28 @@ class SettingsServiceImpl extends SettingsService {
_initialized = true;
_logger.info(runtimeType, 'Settings were initialized successfully');
}

Future<AppLanguageType> _getDefaultLangToUse() async {
try {
_logger.info(runtimeType, '_getDefaultLangToUse: Trying to retrieve device lang...');
final deviceLocale = await Devicelocale.currentAsLocale;
final appLang = languagesMap.entries.firstWhere((val) => val.value.code == deviceLocale.languageCode, orElse: () => null);
if (appLang == null) {
_logger.info(
runtimeType,
"_getDefaultLangToUse: Couldn't find an appropriate app language for = ${deviceLocale.languageCode}_${deviceLocale.countryCode}, falling back to english",
);
return AppLanguageType.english;
}

_logger.info(
runtimeType,
'_getDefaultLangToUse: Found an appropriate language to use for = ${deviceLocale.languageCode}_${deviceLocale.countryCode}, that is = ${appLang.key}',
);
return appLang.key;
} catch (e, s) {
_logger.error(runtimeType, '_getDefaultLangToUse: Unknown error occurred', e, s);
return AppLanguageType.english;
}
}
}
7 changes: 7 additions & 0 deletions pubspec.lock
Expand Up @@ -225,6 +225,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
devicelocale:
dependency: "direct main"
description:
name: devicelocale
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.3"
dog:
dependency: "direct main"
description:
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Expand Up @@ -24,6 +24,7 @@ dependencies:
cupertino_icons: ^1.0.0
data_connection_checker: ^0.3.4
device_info: ^1.0.0
devicelocale: ^0.3.3
dog: ^1.3.1
enum_to_string: ^1.0.14
flutter:
Expand Down

0 comments on commit da6cadf

Please sign in to comment.