Fix currency crash

feature/top10
Aurelien Hubert 7 years ago
parent 6941555e34
commit 3b512b0fa2
  1. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  2. 22
      app/src/main/java/net/pokeranalytics/android/model/utils/Seed.kt
  3. 3
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt
  4. 21
      app/src/main/java/net/pokeranalytics/android/util/CurrencyUtils.kt

@ -486,7 +486,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
* Return the formatted blinds * Return the formatted blinds
*/ */
fun getBlinds(): String { fun getBlinds(): String {
val currencyCode = bankroll?.currency?.code ?: Currency.getInstance(Locale.getDefault()).currencyCode val currencyCode = bankroll?.currency?.code ?: CurrencyUtils.getLocaleCurrency().currencyCode
val currencySymbol = Currency.getInstance(currencyCode).symbol val currencySymbol = Currency.getInstance(currencyCode).symbol
return if (cgSmallBlind == null) NULL_TEXT else "$currencySymbol ${cgSmallBlind?.formatted()}/${cgBigBlind?.round()}" return if (cgSmallBlind == null) NULL_TEXT else "$currencySymbol ${cgSmallBlind?.formatted()}/${cgBigBlind?.round()}"
} }

@ -3,12 +3,15 @@ package net.pokeranalytics.android.model.utils
import android.content.Context import android.content.Context
import io.realm.Realm import io.realm.Realm
import io.realm.kotlin.where import io.realm.kotlin.where
import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.model.realm.Currency import net.pokeranalytics.android.model.realm.Currency
import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.model.realm.Game
import net.pokeranalytics.android.model.realm.TournamentFeature
import net.pokeranalytics.android.util.CurrencyUtils
import java.util.* import java.util.*
class Seed(var context:Context) : Realm.Transaction { class Seed(var context:Context) : Realm.Transaction {
override fun execute(realm: Realm) { override fun execute(realm: Realm) {
@ -18,7 +21,7 @@ class Seed(var context:Context) : Realm.Transaction {
} }
private fun createDefaultTournamentFeatures(realm: Realm) { private fun createDefaultTournamentFeatures(realm: Realm) {
context.resources.getStringArray(R.array.seed_tournament_features).forEach { context.resources.getStringArray(net.pokeranalytics.android.R.array.seed_tournament_features).forEach {
val tournamentFeature = TournamentFeature() val tournamentFeature = TournamentFeature()
tournamentFeature.id = UUID.randomUUID().toString() tournamentFeature.id = UUID.randomUUID().toString()
tournamentFeature.name = it tournamentFeature.name = it
@ -27,23 +30,26 @@ class Seed(var context:Context) : Realm.Transaction {
} }
private fun createDefaultCurrencyAndBankroll(realm: Realm) { private fun createDefaultCurrencyAndBankroll(realm: Realm) {
Locale.setDefault(Locale.JAPANESE)
// Currency // Currency
val localeCurrency = java.util.Currency.getInstance(Locale.getDefault()) val localeCurrency = CurrencyUtils.getLocaleCurrency()
val defaultCurrency = Currency() val defaultCurrency = Currency()
defaultCurrency.code = localeCurrency.currencyCode defaultCurrency.code = localeCurrency.currencyCode
realm.insertOrUpdate(defaultCurrency) realm.insertOrUpdate(defaultCurrency)
// Bankroll // Bankroll
val bankroll = Bankroll() val bankroll = Bankroll()
bankroll.name = context.resources.getString(R.string.live) bankroll.name = context.resources.getString(net.pokeranalytics.android.R.string.live)
bankroll.live = true bankroll.live = true
bankroll.currency = realm.where<Currency>().equalTo("code", localeCurrency.currencyCode).findFirst() bankroll.currency = realm.where<Currency>().equalTo("code", localeCurrency.currencyCode).findFirst()
realm.insertOrUpdate(bankroll) realm.insertOrUpdate(bankroll)
} }
private fun createDefaultGames(realm: Realm) { private fun createDefaultGames(realm: Realm) {
val gamesName = context.resources.getStringArray(R.array.seed_games) val gamesName = context.resources.getStringArray(net.pokeranalytics.android.R.array.seed_games)
val gamesShortName = context.resources.getStringArray(R.array.seed_games_short_name) val gamesShortName = context.resources.getStringArray(net.pokeranalytics.android.R.array.seed_games_short_name)
for ((index, name) in gamesName.withIndex()) { for ((index, name) in gamesName.withIndex()) {
val game = Game() val game = Game()
game.id = UUID.randomUUID().toString() game.id = UUID.randomUUID().toString()

@ -11,6 +11,7 @@ import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheet
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.util.CurrencyUtils
import net.pokeranalytics.android.util.NULL_TEXT import net.pokeranalytics.android.util.NULL_TEXT
import net.pokeranalytics.android.util.extensions.formatted import net.pokeranalytics.android.util.extensions.formatted
import net.pokeranalytics.android.util.extensions.round import net.pokeranalytics.android.util.extensions.round
@ -107,7 +108,7 @@ sealed class FilterElementRow : RowRepresentable {
data class Blind(var sb: Double? = null, var bb: Double? = null, var code: String? = null) : FilterElementRow() { data class Blind(var sb: Double? = null, var bb: Double? = null, var code: String? = null) : FilterElementRow() {
val name: String val name: String
get() { get() {
val currencyCode = code ?: Currency.getInstance(Locale.getDefault()).currencyCode val currencyCode = code ?: CurrencyUtils.getLocaleCurrency().currencyCode
val currencySymbol = Currency.getInstance(currencyCode).symbol val currencySymbol = Currency.getInstance(currencyCode).symbol
return if (sb == null) NULL_TEXT else "$currencySymbol ${sb?.formatted()}/${bb?.round()}" return if (sb == null) NULL_TEXT else "$currencySymbol ${sb?.formatted()}/${bb?.round()}"
} }

@ -13,7 +13,7 @@ class CurrencyUtils {
* return the currency associated with this bankroll * return the currency associated with this bankroll
*/ */
fun getCurrency(bankroll: Bankroll? = null) : Currency { fun getCurrency(bankroll: Bankroll? = null) : Currency {
val currencyCode = bankroll?.currency?.code ?: Currency.getInstance(Locale.getDefault()).currencyCode val currencyCode = bankroll?.currency?.code ?: CurrencyUtils.getLocaleCurrency().currencyCode
return Currency.getInstance(currencyCode) return Currency.getInstance(currencyCode)
} }
@ -40,6 +40,25 @@ class CurrencyUtils {
return currencyFormatter return currencyFormatter
} }
/**
* Return the locale currency, or en_US if there
*/
fun getLocaleCurrency() : Currency {
return try {
Currency.getInstance(Locale.getDefault())
} catch (ex: Exception) {
when (Locale.getDefault().language) {
"en" -> Currency.getInstance(Locale("en", "US"))
"fr" -> Currency.getInstance(Locale("fr", "FR"))
"es" -> Currency.getInstance(Locale("es", "ES"))
"de" -> Currency.getInstance(Locale("de", "DE"))
"ja" -> Currency.getInstance(Locale("ja", "JP"))
"zh" -> Currency.getInstance(Locale("zh", "CN"))
else -> Currency.getInstance(Locale("en", "US"))
}
}
}
} }
} }
Loading…
Cancel
Save