diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 99dc6d37..dd2be89a 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -13,7 +13,6 @@ import net.pokeranalytics.android.model.migrations.Patcher import net.pokeranalytics.android.model.migrations.PokerAnalyticsMigration import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.utils.Seed -import net.pokeranalytics.android.util.FakeDataManager import net.pokeranalytics.android.util.PokerAnalyticsLogs import net.pokeranalytics.android.util.UserDefaults import net.pokeranalytics.android.util.billing.AppGuard @@ -77,7 +76,7 @@ class PokerAnalyticsApplication : Application() { if (sessionsCount < 10) { GlobalScope.launch { - FakeDataManager.createFakeSessions(200) +// FakeDataManager.createFakeSessions(200) } } diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt index 63507abc..fe3e21a5 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt @@ -15,10 +15,9 @@ class BankrollCalculator { fun computeReport(realm: Realm, setup: BankrollReportSetup) : BankrollReport { - //val realm = Realm.getDefaultInstance() - val report = BankrollReport(setup) + realm.refresh() // fixes an issue where a newly created bankroll is not found, throwing an exception val bankrolls: List = if (setup.bankrollId != null) { val bankroll = realm.findById(setup.bankrollId) ?: throw PAIllegalStateException("Bankroll not found with id=${setup.bankrollId}") diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReportManager.kt b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReportManager.kt index 2bb69dfb..fef17f3f 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReportManager.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReportManager.kt @@ -27,7 +27,6 @@ object BankrollReportManager { init { val realm = Realm.getDefaultInstance() - realm.isAutoRefresh = true computableResults = realm.where(ComputableResult::class.java).findAll() bankrolls = realm.where(Bankroll::class.java).findAll() transactions = realm.where(Transaction::class.java).findAll() @@ -60,6 +59,7 @@ object BankrollReportManager { fun reportForBankroll(bankrollId: String?, handler: (BankrollReport) -> Unit) { + Timber.d("Request bankroll report for bankrollId = $bankrollId") // if the report exists, return it val existingReport: BankrollReport? = this.reports[bankrollId] if (existingReport != null) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt index 7a188e18..bdae834e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt @@ -25,6 +25,7 @@ import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable import net.pokeranalytics.android.util.extensions.findById +import timber.log.Timber class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { @@ -111,6 +112,7 @@ class BankrollDetailsFragment : RealmFragment(), StaticRowRepresentableDataSourc private fun updateUI() { this.updateMenuUI() + Timber.d("BankrollDetailsFragment > updateUI > reportForBankroll") BankrollReportManager.reportForBankroll(this.bankrollId) { bankrollReport -> this.initRows(bankrollReport) this.bankrollAdapter.notifyDataSetChanged() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt index 47cc09fc..60214e3a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt @@ -8,7 +8,6 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import com.github.mikephil.charting.data.LineDataSet -import io.realm.RealmObject import io.realm.RealmResults import kotlinx.android.synthetic.main.fragment_bankroll.* import kotlinx.coroutines.Dispatchers @@ -36,6 +35,7 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollMainRow import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollTotalRow import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable import net.pokeranalytics.android.util.extensions.sorted +import timber.log.Timber import java.util.* import kotlin.collections.ArrayList @@ -60,8 +60,6 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour private var rows: ArrayList = ArrayList() private var bankrollRowRepresentables: HashMap> = HashMap() - private var lastItemClickedPosition: Int = 0 - private var deletedRow: RowRepresentable? = null private lateinit var bankrolls: RealmResults @@ -106,26 +104,6 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour } - override fun adapterRows(): List? { - return rows - } - - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - lastItemClickedPosition = position - when (row) { - is BankrollGraphRow -> { - val lineDataSet = row.dataSet as LineDataSet - GraphActivity.newInstance(requireContext(), listOf(lineDataSet), title = getString(R.string.bankroll)) - } - is BankrollRowRepresentable -> { - BankrollReportManager.reportForBankroll(row.bankrollId) { bankrollReport -> - BankrollDetailsActivity.newInstanceForResult(this, bankrollReport, RequestCode.BANKROLL_DETAILS.value) - } - } - } - } - - // Business /** * Init data @@ -133,8 +111,17 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour private fun initData() { this.bankrolls = getRealm().sorted() + this.bankrolls.addChangeListener { _, _ -> + this.createRowRepresentables() + } + + this.createRowRepresentables() + } + + private fun createRowRepresentables() { rows.clear() + bankrollRowRepresentables.clear() // Virtual bankroll val graphRow = BankrollGraphRow() @@ -148,13 +135,13 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.bankrolls)) bankrolls.forEach { bankroll -> + Timber.d("Creating row for br : ${bankroll.id}, name= ${bankroll.name}, isManaged = ${bankroll.isManaged()}, isValid = ${bankroll.isValid}") val row = BankrollTotalRow(bankroll.id, bankroll.name) rows.add(row) bankrollRowRepresentables[bankroll.id] = listOf(row) } dataListAdapter.notifyDataSetChanged() - } /** @@ -184,17 +171,22 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour } } - override fun updateUIAfterDeletion(itemId: String, itemPosition: Int) { - lastItemClickedPosition = rows.indexOfFirst { if (it is BankrollRowRepresentable) it.bankrollId == itemId else false } - deletedRow = rows.find { if (it is BankrollRowRepresentable) it.bankrollId == itemId else false } - rows.removeAt(lastItemClickedPosition) - dataListAdapter.notifyItemRemoved(lastItemClickedPosition) + override fun adapterRows(): List? { + return rows } - override fun updateUIAfterUndoDeletion(newItem: RealmObject) { - deletedRow?.let { row -> - rows.add(lastItemClickedPosition, row) - dataListAdapter.notifyDataSetChanged() // update both virtual + ex-deleted + override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + when (row) { + is BankrollGraphRow -> { + val lineDataSet = row.dataSet as LineDataSet + GraphActivity.newInstance(requireContext(), listOf(lineDataSet), title = getString(R.string.bankroll)) + } + is BankrollRowRepresentable -> { + Timber.d("BankrollFragment > onRowSelected > reportForBankroll") + BankrollReportManager.reportForBankroll(row.bankrollId) { bankrollReport -> + BankrollDetailsActivity.newInstanceForResult(this, bankrollReport, RequestCode.BANKROLL_DETAILS.value) + } + } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index d0b739f0..747338c7 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -38,6 +38,7 @@ import net.pokeranalytics.android.ui.graph.AxisFormatting import net.pokeranalytics.android.ui.graph.setStyle import net.pokeranalytics.android.ui.view.rowrepresentable.* import net.pokeranalytics.android.util.extensions.longDate +import timber.log.Timber /** * An interface used to factor the configuration of RecyclerView.ViewHolder @@ -142,6 +143,7 @@ enum class RowViewType(private var layoutRes: Int) { */ @SuppressWarnings("ResourceType") inner class RowViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { + override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { when (row) { @@ -153,6 +155,7 @@ enum class RowViewType(private var layoutRes: Int) { it.text = row.localizedTitle(itemView.context) } + Timber.d("RowViewHolder > bind > reportForBankroll") BankrollReportManager.reportForBankroll(row.bankrollId) { report -> itemView.findViewById(R.id.title)?.let { @@ -411,6 +414,7 @@ enum class RowViewType(private var layoutRes: Int) { when (row) { is BankrollGraphRow -> { + Timber.d("GraphViewHolder > bind > reportForBankroll") BankrollReportManager.reportForBankroll(row.bankrollId) { report -> val dataSet = report.lineDataSet(itemView.context) row.dataSet = dataSet @@ -441,6 +445,7 @@ enum class RowViewType(private var layoutRes: Int) { if (row is BankrollRowRepresentable) { + Timber.d("LegendDefaultViewHolder > bind > reportForBankroll") BankrollReportManager.reportForBankroll(row.bankrollId) { report -> itemView.findViewById(R.id.stat1Value)?.let {