From c731efd2095d08a54d9aff59b1e3e48b391dfec0 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Mon, 17 Jun 2019 13:05:00 +0200 Subject: [PATCH] fix blinds formatting --- .../android/model/migrations/Patcher.kt | 14 ++++++++++++ .../android/model/realm/Session.kt | 7 +++++- .../android/ui/fragment/CurrenciesFragment.kt | 13 +++-------- .../android/util/Preferences.kt | 22 ++++++++++++------- .../util/extensions/CurrencyExtensions.kt | 11 ++++++++++ .../util/extensions/NumbersExtension.kt | 4 +++- 6 files changed, 51 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/util/extensions/CurrencyExtensions.kt diff --git a/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt b/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt index 8819d996..2f325f92 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt @@ -19,6 +19,9 @@ class Patcher { Preferences.executeOnce(Preferences.Keys.PATCH_TRANSACTION_TYPES_NAMES, context) { patchDefaultTransactionTypes(context) } + Preferences.executeOnce(Preferences.Keys.PATCH_BLINDS_FORMAT, context) { + patchBlindFormat(context) + } } @@ -59,6 +62,17 @@ class Patcher { realm.close() } + private fun patchBlindFormat(context: Context) { + val realm = Realm.getDefaultInstance() + realm.executeTransaction { + val sessions = realm.where(Session::class.java).findAll() + sessions.forEach { session -> + session.formatBlinds() + } + } + realm.close() + } + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 447cd62a..8c7d977f 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -244,6 +244,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat override var bankroll: Bankroll? = null set(value) { field = value + this.formatBlinds() this.updateRowRepresentation() } @@ -620,7 +621,11 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat cgBigBlind?.let { bb -> val sb = cgSmallBlind ?: bb / 2.0 val preFormattedBlinds = "${sb.formatted()}/${bb.round()}" - blinds = bb.toCurrency(currency).replace(Regex.fromLiteral("-?\\d+(\\.\\d+)?"), preFormattedBlinds) + println("<<<<<< bb.toCurrency(currency) : ${bb.toCurrency(currency)}") + println("<<<<<< preFormattedBlinds : $preFormattedBlinds") + val regex = Regex("-?\\d+(\\.\\d+)?") + blinds = bb.toCurrency(currency).replace(regex, preFormattedBlinds) + println("<<<<<< blinds = $blinds") } } 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 9e2c6eef..bc44a188 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 @@ -17,6 +17,7 @@ import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.SeparatorRow +import net.pokeranalytics.android.util.UserDefaults import java.util.* class CurrenciesFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { @@ -44,19 +45,11 @@ class CurrenciesFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataS ) } - private val availableCurrencyLocales = Locale.getAvailableLocales().mapNotNull { - try { - Currency.getInstance(it) - } catch (e: Exception) { - null - } - } - private val availableCurrencies = this.systemCurrencies.filter { !mostUsedCurrencyCodes.contains(it.currencyCode) }.filter { - availableCurrencyLocales.filter { currencyLocale -> - currencyLocale.currencyCode == it.currencyCode + UserDefaults.availableCurrencyLocales.filter { currencyLocale -> + Currency.getInstance(currencyLocale).currencyCode == it.currencyCode }.isNotEmpty() }.sortedBy { it.displayName 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 6262f7c5..beff0335 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -27,7 +27,8 @@ class Preferences { ACTIVE_FILTER_ID("ActiveFilterId"), LATEST_PURCHASE("latestPurchase"), PATCH_BREAK("patchBreaks"), - PATCH_TRANSACTION_TYPES_NAMES("patchTransactionTypesNames") + PATCH_TRANSACTION_TYPES_NAMES("patchTransactionTypesNames"), + PATCH_BLINDS_FORMAT("patchBlindFormat") } companion object { @@ -84,14 +85,10 @@ class Preferences { return getString(Keys.CURRENCY_CODE, context) } - private fun getCurrencyLocale(context : Context) : Locale? { + fun getCurrencyLocale(context : Context) : Locale? { getCurrencyCode(context)?.let { currencyCode -> - Locale.getAvailableLocales().filter { - try { - Currency.getInstance(it).currencyCode == currencyCode - } catch (e: Exception) { - false - } + UserDefaults.availableCurrencyLocales.filter { + Currency.getInstance(it).currencyCode == currencyCode }.firstOrNull()?.let { return it } @@ -137,6 +134,15 @@ class UserDefaults private constructor(context: Context) { currency = Preferences.getDefaultCurrency(context) ?: getLocaleCurrency() } + val availableCurrencyLocales = Locale.getAvailableLocales().mapNotNull { + try { + Currency.getInstance(it) + it + } catch (e: Exception) { + null + } + } + /** * Return the locale currency, or en_US if there */ diff --git a/app/src/main/java/net/pokeranalytics/android/util/extensions/CurrencyExtensions.kt b/app/src/main/java/net/pokeranalytics/android/util/extensions/CurrencyExtensions.kt new file mode 100644 index 00000000..baca88f7 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/util/extensions/CurrencyExtensions.kt @@ -0,0 +1,11 @@ +package net.pokeranalytics.android.util.extensions + +import net.pokeranalytics.android.util.UserDefaults +import java.util.* + +val Currency.locale : Locale + get() = + UserDefaults.availableCurrencyLocales.filter { + Currency.getInstance(it).currencyCode == this.currencyCode + }.firstOrNull() ?: Locale.getDefault() + 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 39a3f043..cfc80e51 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 @@ -2,6 +2,8 @@ package net.pokeranalytics.android.util.extensions import android.content.Context import net.pokeranalytics.android.R +import net.pokeranalytics.android.util.Preferences +import net.pokeranalytics.android.util.UserDefaults import java.lang.Math.abs import java.math.RoundingMode import java.text.DecimalFormat @@ -50,7 +52,7 @@ fun Double.formatted(): String { fun Double.toCurrency(currency: Currency? = null): String { - val currencyFormatter = NumberFormat.getCurrencyInstance() + val currencyFormatter = NumberFormat.getCurrencyInstance(currency?.locale ?: Locale.getDefault()) currency?.let { currencyFormatter.currency = currency }