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) {
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()
}
}
}

@ -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")
}
}

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

@ -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
*/

@ -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 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
}

Loading…
Cancel
Save