From ff0a2d7697a7a40e955045d7988f97922364240d Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 14 Mar 2019 14:08:15 +0100 Subject: [PATCH] Improve Bankroll edition --- .../android/model/realm/Bankroll.kt | 10 ++--- .../ui/fragment/BankrollDataFragment.kt | 43 ++++++++++++++----- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index 61480660..333a6701 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -21,7 +21,7 @@ open class Bankroll(name: String = "") : RealmObject(), Manageable, StaticRowRep companion object { fun newInstance() : Bankroll { - var bankroll: Bankroll = Bankroll() + val bankroll = Bankroll() return bankroll } @@ -84,14 +84,10 @@ open class Bankroll(name: String = "") : RealmObject(), Manageable, StaticRowRep this.live = if (value is Boolean) !value else false } BankrollRow.CURRENCY -> { - val localCurrency = if (currency != null) currency as Currency else realm.createObject(Currency::class.java) - localCurrency.code = value as String? - this.currency = localCurrency + this.currency?.code = value as String? } BankrollRow.RATE -> { - val localCurrency = if (currency != null) currency as Currency else realm.createObject(Currency::class.java) - localCurrency.rate = (value as String? ?: "0").toDouble() - this.currency = localCurrency + this.currency?.rate = (value as String? ?: "0").toDouble() } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt index fde60f57..616fbfb3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDataFragment.kt @@ -4,7 +4,10 @@ import android.app.Activity.RESULT_OK import android.content.Intent import android.os.Bundle import android.view.View -import io.realm.kotlin.where +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.ui.activity.CurrenciesActivity @@ -37,8 +40,8 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS } private lateinit var defaultCurrency: Currency - - val rows = ArrayList() + private val rows = ArrayList() + private var isRefreshingRate = false override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -89,6 +92,14 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS } } + override fun boolForRow(row: RowRepresentable): Boolean { + return when(row) { + BankrollRow.LIVE -> !bankroll.live + BankrollRow.REFRESH_RATE -> isRefreshingRate + else -> super.boolForRow(row) + } + } + override fun editDescriptors(row: RowRepresentable): ArrayList? { return when (row) { SimpleRow.NAME -> row.editingDescriptors(mapOf("defaultValue" to this.bankroll.name)) @@ -97,13 +108,20 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS } } - override fun boolForRow(row: RowRepresentable): Boolean { - return super.boolForRow(row) - } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { when (row) { BankrollRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@BankrollDataFragment, BankrollDataFragment.REQUEST_CODE_CURRENCY) + BankrollRow.REFRESH_RATE -> { + isRefreshingRate = true + + //TODO: Call web-service to get the currency rate + GlobalScope.launch(Dispatchers.Main) { + delay(1500) + isRefreshingRate = false + rowRepresentableAdapter.refreshRow(BankrollRow.REFRESH_RATE) + } + rowRepresentableAdapter.refreshRow(BankrollRow.REFRESH_RATE) + } else -> super.onRowSelected(position, row, fromAction) } } @@ -114,14 +132,17 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS } + /** + * Init data + */ private fun initData() { defaultCurrency = Currency.getInstance(Preferences.getCurrencyLocale(this.parentActivity)) - if (bankroll.currency == null) { - val realm = getRealm() - val currency = realm.where().equalTo("code", defaultCurrency.currencyCode).findFirst() - bankroll.currency = currency + if (!isUpdating) { + bankroll.currency = net.pokeranalytics.android.model.realm.Currency() + bankroll.currency?.code = defaultCurrency.currencyCode + bankroll.currency?.rate = 1.0 } }