From 965b4bad4939da7d2d39534b6ca0a9fba9f4c0a3 Mon Sep 17 00:00:00 2001 From: Edouard Marquez Date: Sun, 24 Oct 2021 14:43:58 +0200 Subject: [PATCH] FIX: changing the OS locale doesn't change the app locale (#4323) * When the serving size value is incorrect (eg: "serving" with barcode 5900951251849), the app shouldn't crash #4270 * FIX: changing the OS locale doesn't change the app locale Issue #4309 * [CodeFactor] Apply fixes Co-authored-by: codefactor-io --- .../nutrition/ProductEditNutritionFactsFragment.kt | 13 ++++++++----- .../github/scrachx/openfood/utils/LocaleManager.kt | 10 ++++++---- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/openfoodfacts/github/scrachx/openfood/features/product/edit/nutrition/ProductEditNutritionFactsFragment.kt b/app/src/main/java/openfoodfacts/github/scrachx/openfood/features/product/edit/nutrition/ProductEditNutritionFactsFragment.kt index 5af985ba331c..4172701b97c0 100644 --- a/app/src/main/java/openfoodfacts/github/scrachx/openfood/features/product/edit/nutrition/ProductEditNutritionFactsFragment.kt +++ b/app/src/main/java/openfoodfacts/github/scrachx/openfood/features/product/edit/nutrition/ProductEditNutritionFactsFragment.kt @@ -310,13 +310,16 @@ class ProductEditNutritionFactsFragment : ProductEditFragment() { getModifierIndex(nutriments[nutriment]?.modifier) private fun updateServingSize(servingSize: String) { + try { + val (value, unit) = parseServing(servingSize) - val (value, unit) = parseServing(servingSize) - - binding.servingSize.setText(value) + binding.servingSize.setText(value) - if (unit != null) { - binding.servingSize.unitSpinner?.setSelection(getServingUnitIndex(unit)) + if (unit != null) { + binding.servingSize.unitSpinner?.setSelection(getServingUnitIndex(unit)) + } + } catch (exception : IllegalArgumentException) { + binding.servingSize.setText("") } } diff --git a/app/src/main/java/openfoodfacts/github/scrachx/openfood/utils/LocaleManager.kt b/app/src/main/java/openfoodfacts/github/scrachx/openfood/utils/LocaleManager.kt index d69951e1cc34..d661e7898fa3 100644 --- a/app/src/main/java/openfoodfacts/github/scrachx/openfood/utils/LocaleManager.kt +++ b/app/src/main/java/openfoodfacts/github/scrachx/openfood/utils/LocaleManager.kt @@ -40,12 +40,14 @@ class LocaleManager @Inject constructor( private var currentLocale: Locale init { - currentLocale = getLanguageFromPrefs()?.let { - LocaleUtils.parseLocale(it) - } ?: Locale.getDefault() + currentLocale = reloadLocale() } - fun restoreLocalizedContext(context: Context) = changeAppLanguage(context, currentLocale) + fun restoreLocalizedContext(context: Context): Context = changeAppLanguage(context, reloadLocale()) + + private fun reloadLocale() = getLanguageFromPrefs()?.let { + LocaleUtils.parseLocale(it) + } ?: Locale.getDefault() /** * Get the language of the app [Locale] (Selected in settings).