diff --git a/fastlane/metadata/android/en-US/changelogs/47.txt b/fastlane/metadata/android/en-US/changelogs/47.txt index dbc3dd70..30be3477 100644 --- a/fastlane/metadata/android/en-US/changelogs/47.txt +++ b/fastlane/metadata/android/en-US/changelogs/47.txt @@ -1,2 +1,3 @@ * Implement feature #316 Add fixupx.com as supported link. * Implement PR #323 Put newly saved tweets to the top of the saved view. +* Fix issue #324 Customized translator settings not applied on Application Restart. diff --git a/fastlane/metadata/android/en-US/changelogs/default.txt b/fastlane/metadata/android/en-US/changelogs/default.txt index dbc3dd70..30be3477 100644 --- a/fastlane/metadata/android/en-US/changelogs/default.txt +++ b/fastlane/metadata/android/en-US/changelogs/default.txt @@ -1,2 +1,3 @@ * Implement feature #316 Add fixupx.com as supported link. * Implement PR #323 Put newly saved tweets to the top of the saved view. +* Fix issue #324 Customized translator settings not applied on Application Restart. diff --git a/lib/main.dart b/lib/main.dart index a0046d98..8e7ed3cd 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -41,6 +41,7 @@ import 'package:squawker/utils/accent_util.dart'; import 'package:squawker/utils/data_service.dart'; import 'package:squawker/utils/iterables.dart'; import 'package:squawker/utils/misc.dart'; +import 'package:squawker/utils/translation.dart'; import 'package:squawker/utils/urls.dart'; import 'package:timeago/timeago.dart' as timeago; @@ -239,6 +240,8 @@ Future main() async { AppHttpClient.setProxy(prefService.get(optionProxy)); + TranslationAPI.setTranslationHostsFromStr(prefService.get(optionTranslators)); + runApp(PrefService( service: prefService, child: MultiProvider( diff --git a/lib/settings/_general.dart b/lib/settings/_general.dart index 491db554..f8a5d5dd 100644 --- a/lib/settings/_general.dart +++ b/lib/settings/_general.dart @@ -205,7 +205,7 @@ class SettingsGeneralFragment extends StatelessWidget { subtitle: Text(L10n.of(context).translators_description), onTap: () async { BasePrefService prefs = PrefService.of(context); - List> translationHosts = TranslationAPI.readTranslationHosts(translationHosts: prefs.get(optionTranslators)); + List> translationHosts = TranslationAPI.translationHosts(); var result = await showDialog( barrierDismissible: false, context: context, @@ -216,7 +216,7 @@ class SettingsGeneralFragment extends StatelessWidget { } ); if (result == true) { - String s = TranslationAPI.updateTranslationHosts(translationHosts); + String s = TranslationAPI.setTranslationHosts(translationHosts); prefs.set(optionTranslators, s); } }, diff --git a/lib/utils/translation.dart b/lib/utils/translation.dart index cdcf88fc..08357a6f 100644 --- a/lib/utils/translation.dart +++ b/lib/utils/translation.dart @@ -54,6 +54,11 @@ class TranslationAPI { 'iw': 'he' }; + static List> translationHosts() { + _translation_hosts ??= default_translation_hosts; + return _translation_hosts!; + } + static int translationHostsLength() { _translation_hosts ??= default_translation_hosts; return _translation_hosts!.length; @@ -73,21 +78,22 @@ class TranslationAPI { return translationHost(); } - static String updateTranslationHosts(List> translationHosts) { + static String setTranslationHosts(List>? translationHosts) { _translation_hosts = translationHosts; + _translation_hosts ??= default_translation_hosts; return jsonEncode(_translation_hosts); } - static List> readTranslationHosts({String? translationHosts}) { - if (translationHosts != null) { + static List> setTranslationHostsFromStr(String? translationHosts) { + if (translationHosts == null) { + _translation_hosts = default_translation_hosts; + } + else { List> lst = []; for (dynamic item in jsonDecode(translationHosts)) { lst.add(item); } - return lst; - } - if (_translation_hosts == null) { - return default_translation_hosts; + _translation_hosts = lst; } return _translation_hosts!; }