fix blinds formatting

csv
Razmig Sarkissian 6 years ago
parent d65a76964f
commit c731efd209
  1. 14
      app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt
  2. 7
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  3. 13
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt
  4. 22
      app/src/main/java/net/pokeranalytics/android/util/Preferences.kt
  5. 11
      app/src/main/java/net/pokeranalytics/android/util/extensions/CurrencyExtensions.kt
  6. 4
      app/src/main/java/net/pokeranalytics/android/util/extensions/NumbersExtension.kt

@ -19,6 +19,9 @@ class Patcher {
Preferences.executeOnce(Preferences.Keys.PATCH_TRANSACTION_TYPES_NAMES, context) { Preferences.executeOnce(Preferences.Keys.PATCH_TRANSACTION_TYPES_NAMES, context) {
patchDefaultTransactionTypes(context) patchDefaultTransactionTypes(context)
} }
Preferences.executeOnce(Preferences.Keys.PATCH_BLINDS_FORMAT, context) {
patchBlindFormat(context)
}
} }
@ -59,6 +62,17 @@ class Patcher {
realm.close() 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()
}
} }
} }

@ -244,6 +244,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
override var bankroll: Bankroll? = null override var bankroll: Bankroll? = null
set(value) { set(value) {
field = value field = value
this.formatBlinds()
this.updateRowRepresentation() this.updateRowRepresentation()
} }
@ -620,7 +621,11 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
cgBigBlind?.let { bb -> cgBigBlind?.let { bb ->
val sb = cgSmallBlind ?: bb / 2.0 val sb = cgSmallBlind ?: bb / 2.0
val preFormattedBlinds = "${sb.formatted()}/${bb.round()}" 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")
} }
} }

@ -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.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.SeparatorRow import net.pokeranalytics.android.ui.view.rowrepresentable.SeparatorRow
import net.pokeranalytics.android.util.UserDefaults
import java.util.* import java.util.*
class CurrenciesFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { 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 { private val availableCurrencies = this.systemCurrencies.filter {
!mostUsedCurrencyCodes.contains(it.currencyCode) !mostUsedCurrencyCodes.contains(it.currencyCode)
}.filter { }.filter {
availableCurrencyLocales.filter { currencyLocale -> UserDefaults.availableCurrencyLocales.filter { currencyLocale ->
currencyLocale.currencyCode == it.currencyCode Currency.getInstance(currencyLocale).currencyCode == it.currencyCode
}.isNotEmpty() }.isNotEmpty()
}.sortedBy { }.sortedBy {
it.displayName it.displayName

@ -27,7 +27,8 @@ class Preferences {
ACTIVE_FILTER_ID("ActiveFilterId"), ACTIVE_FILTER_ID("ActiveFilterId"),
LATEST_PURCHASE("latestPurchase"), LATEST_PURCHASE("latestPurchase"),
PATCH_BREAK("patchBreaks"), PATCH_BREAK("patchBreaks"),
PATCH_TRANSACTION_TYPES_NAMES("patchTransactionTypesNames") PATCH_TRANSACTION_TYPES_NAMES("patchTransactionTypesNames"),
PATCH_BLINDS_FORMAT("patchBlindFormat")
} }
companion object { companion object {
@ -84,14 +85,10 @@ class Preferences {
return getString(Keys.CURRENCY_CODE, context) return getString(Keys.CURRENCY_CODE, context)
} }
private fun getCurrencyLocale(context : Context) : Locale? { fun getCurrencyLocale(context : Context) : Locale? {
getCurrencyCode(context)?.let { currencyCode -> getCurrencyCode(context)?.let { currencyCode ->
Locale.getAvailableLocales().filter { UserDefaults.availableCurrencyLocales.filter {
try { Currency.getInstance(it).currencyCode == currencyCode
Currency.getInstance(it).currencyCode == currencyCode
} catch (e: Exception) {
false
}
}.firstOrNull()?.let { }.firstOrNull()?.let {
return it return it
} }
@ -137,6 +134,15 @@ class UserDefaults private constructor(context: Context) {
currency = Preferences.getDefaultCurrency(context) ?: getLocaleCurrency() 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 * Return the locale currency, or en_US if there
*/ */

@ -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()

@ -2,6 +2,8 @@ package net.pokeranalytics.android.util.extensions
import android.content.Context import android.content.Context
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.util.Preferences
import net.pokeranalytics.android.util.UserDefaults
import java.lang.Math.abs import java.lang.Math.abs
import java.math.RoundingMode import java.math.RoundingMode
import java.text.DecimalFormat import java.text.DecimalFormat
@ -50,7 +52,7 @@ fun Double.formatted(): String {
fun Double.toCurrency(currency: Currency? = null): String { fun Double.toCurrency(currency: Currency? = null): String {
val currencyFormatter = NumberFormat.getCurrencyInstance() val currencyFormatter = NumberFormat.getCurrencyInstance(currency?.locale ?: Locale.getDefault())
currency?.let { currency?.let {
currencyFormatter.currency = currency currencyFormatter.currency = currency
} }

Loading…
Cancel
Save