From c20be8cff9c73a35382e2d9025217cd1633692fa Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Tue, 16 Apr 2019 11:29:57 +0200 Subject: [PATCH] fix issue with currency --- .../android/ui/fragment/CurrenciesFragment.kt | 8 ++++++++ .../java/net/pokeranalytics/android/util/Preferences.kt | 8 ++++---- .../android/util/extensions/NumbersExtension.kt | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt index ba01d35f..4a53d724 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt @@ -46,6 +46,14 @@ class CurrenciesFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataS private val availableCurrencies = this.systemCurrencies.filter { !mostUsedCurrencyCodes.contains(it.currencyCode) + }.filter { + Locale.getAvailableLocales().filter {locale -> + try { + Currency.getInstance(locale).currencyCode == it.currencyCode + } catch (e: Exception) { + false + } + }.isNotEmpty() }.sortedBy { it.displayName }.map { diff --git a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt index 13a13beb..4c81b519 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -51,13 +51,13 @@ class Preferences { fun getCurrencyLocale(context : Context) : Locale? { getCurrencyCode(context)?.let { currencyCode -> - Locale.getAvailableLocales().filter{ + Locale.getAvailableLocales().filter { try { Currency.getInstance(it).currencyCode == currencyCode } catch (e: Exception) { false } - }.first().let { + }.firstOrNull()?.let { return it } } @@ -90,11 +90,11 @@ class UserDefaults private constructor(context: Context) { companion object : SingletonHolder(::UserDefaults) { lateinit var currency : Currency - lateinit var currencyLocale : Locale + var currencyLocale : Locale? = null fun setCurrencyValues(context: Context) { currency = Preferences.getDefaultCurrency(context) ?: getLocaleCurrency() - currencyLocale = Preferences.getCurrencyLocale(context) ?: Locale.getDefault() + currencyLocale = Preferences.getCurrencyLocale(context) } /** diff --git a/app/src/main/java/net/pokeranalytics/android/util/extensions/NumbersExtension.kt b/app/src/main/java/net/pokeranalytics/android/util/extensions/NumbersExtension.kt index 5ee1d3cd..0b7d22e6 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/extensions/NumbersExtension.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/extensions/NumbersExtension.kt @@ -24,7 +24,7 @@ fun Double.formatted(): String { fun Double.toCurrency(currency: Currency? = null): String { - val currencyFormatter = NumberFormat.getCurrencyInstance(UserDefaults.currencyLocale) + val currencyFormatter = UserDefaults.currencyLocale?.let { NumberFormat.getCurrencyInstance(it) } ?: run { NumberFormat.getCurrencyInstance() } currency?.let { currencyFormatter.currency = currency }