diff --git a/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt b/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt index 6943e464..a154fd1b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt @@ -68,10 +68,9 @@ class Patcher { private fun patchMissingTransactionTypes(context: Context) { val realm = Realm.getDefaultInstance() - val transactionTypes = TransactionType.Value.values() - - realm.executeTransactionAsync { - Seed.createDefaultTransactionTypes(transactionTypes, context, it) + realm.executeTransactionAsync { asyncRealm -> + val transactionTypes = TransactionType.Value.values() + Seed.createDefaultTransactionTypes(transactionTypes, context, asyncRealm) } realm.close() @@ -80,11 +79,12 @@ class Patcher { private fun patchBreaks() { val realm = Realm.getDefaultInstance() - val sets = realm.where(SessionSet::class.java).findAll() - val sessions = Filter.queryOn(realm, Query(QueryCondition.IsCash)) - val results = realm.where(Result::class.java).findAll() + realm.executeTransactionAsync { asyncRealm -> + + val sets = asyncRealm.where(SessionSet::class.java).findAll() + val sessions = Filter.queryOn(asyncRealm, Query(QueryCondition.IsCash)) + val results = asyncRealm.where(Result::class.java).findAll() - realm.executeTransactionAsync { sets.forEach { it.computeStats() } @@ -98,13 +98,12 @@ class Patcher { } realm.close() - } private fun patchDefaultTransactionTypes(context: Context) { val realm = Realm.getDefaultInstance() - realm.executeTransactionAsync { - val tts = realm.where(TransactionType::class.java).findAll() + realm.executeTransactionAsync { asyncRealm -> + val tts = asyncRealm.where(TransactionType::class.java).findAll() tts.forEach { tt -> tt.kind?.let { kind -> val value = TransactionType.Value.values()[kind] @@ -117,8 +116,8 @@ class Patcher { private fun patchStakes() { val realm = Realm.getDefaultInstance() - realm.executeTransactionAsync { - val sessions = realm.where(Session::class.java).findAll() + realm.executeTransactionAsync { asyncRealm -> + val sessions = asyncRealm.where(Session::class.java).findAll() sessions.forEach { session -> val blinds = arrayListOf(session.cgOldSmallBlind, session.cgOldBigBlind).filterNotNull() val blindsFormatted = blinds.map { NumberFormat.getInstance().format(it) } @@ -128,7 +127,7 @@ class Patcher { } } - val handHistories = realm.where(HandHistory::class.java).findAll() + val handHistories = asyncRealm.where(HandHistory::class.java).findAll() handHistories.forEach { hh -> val blinds = arrayListOf(hh.oldSmallBlind, hh.oldBigBlind).filterNotNull() val blindsFormatted = blinds.map { NumberFormat.getInstance().format(it) } @@ -143,8 +142,8 @@ class Patcher { private fun patchNegativeLimits() { val realm = Realm.getDefaultInstance() - realm.executeTransactionAsync { - val sessions = realm.where(Session::class.java).lessThan("limit", 0).findAll() + realm.executeTransactionAsync { asyncRealm -> + val sessions = asyncRealm.where(Session::class.java).lessThan("limit", 0).findAll() sessions.forEach { session -> session.limit = null } @@ -154,10 +153,10 @@ class Patcher { private fun cleanBlindsFilters() { val realm = Realm.getDefaultInstance() - realm.executeTransactionAsync { - val blindFilterConditions = realm.where(FilterCondition::class.java).equalTo("filterName", "AnyBlind").findAll() + realm.executeTransactionAsync { asyncRealm -> + val blindFilterConditions = asyncRealm.where(FilterCondition::class.java).equalTo("filterName", "AnyBlind").findAll() val filterIds = blindFilterConditions.mapNotNull { it.filters?.firstOrNull() }.map { it.id } - val filters = realm.where(Filter::class.java).`in`("id", filterIds.toTypedArray()).findAll() + val filters = asyncRealm.where(Filter::class.java).`in`("id", filterIds.toTypedArray()).findAll() filters.deleteAllFromRealm() } realm.close() @@ -210,8 +209,8 @@ class Patcher { private fun patchZeroTable() { val realm = Realm.getDefaultInstance() val zero = 0 - val sessions = realm.where().equalTo("numberOfTables", zero).findAll() - realm.executeTransactionAsync { + realm.executeTransactionAsync { asyncRealm -> + val sessions = asyncRealm.where().equalTo("numberOfTables", zero).findAll() sessions.forEach { s -> s.numberOfTables = 1 } @@ -221,8 +220,8 @@ class Patcher { private fun patchRatedAmounts() { val realm = Realm.getDefaultInstance() - val transactions = realm.where().findAll() - realm.executeTransactionAsync { + realm.executeTransactionAsync { asyncRealm -> + val transactions = asyncRealm.where().findAll() transactions.forEach { t -> t.computeRatedAmount() } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/data/DataManagerFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/data/DataManagerFragment.kt index b9a35194..ad620232 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/data/DataManagerFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/data/DataManagerFragment.kt @@ -9,6 +9,7 @@ import android.view.MenuItem import android.view.View import androidx.appcompat.app.AlertDialog import androidx.lifecycle.ViewModelProvider +import io.realm.kotlin.isManaged import net.pokeranalytics.android.R import net.pokeranalytics.android.exceptions.ConfigurationException import net.pokeranalytics.android.model.interfaces.Savable @@ -16,6 +17,7 @@ import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.fragment.components.RealmFragment import net.pokeranalytics.android.ui.modules.datalist.DataListActivity import net.pokeranalytics.android.ui.viewmodel.DataManagerViewModel +import timber.log.Timber open class DataManagerFragment : RealmFragment() { @@ -25,11 +27,6 @@ open class DataManagerFragment : RealmFragment() { open val modelClass: Class = DataManagerViewModel::class.java -// lateinit var item: Deletable -// protected lateinit var liveDataType: LiveData -// protected var primaryKey: String? = null -// protected var dataType: Int? = null - var deleteButtonShouldAppear = false set(value) { field = value @@ -96,8 +93,9 @@ open class DataManagerFragment : RealmFragment() { val status = savable.getSaveValidityStatus(realm = this.getRealm()) when (status) { SaveValidityStatus.VALID -> { - this.getRealm().executeTransactionAsync { - val managedItem = it.copyToRealmOrUpdate(this.model.item) + Timber.d("ismanaged = ${this.model.item.isManaged()}") + this.getRealm().executeTransactionAsync { asyncRealm -> + val managedItem = asyncRealm.copyToRealmOrUpdate(this.model.item) if (managedItem is Savable) { val uniqueIdentifier = managedItem.id finishActivityWithResult(uniqueIdentifier) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/data/TransactionDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/data/TransactionDataFragment.kt index a66f67bb..a8d9929b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/data/TransactionDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/data/TransactionDataFragment.kt @@ -2,10 +2,7 @@ package net.pokeranalytics.android.ui.modules.data import android.content.Context import io.realm.kotlin.where -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch +import kotlinx.coroutines.* import net.pokeranalytics.android.calculus.bankroll.BankrollReportManager import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.model.realm.Transaction @@ -40,7 +37,9 @@ class TransactionDataFragment : EditableDataFragment(), StaticRowRepresentableDa if (this.transaction.bankroll == null) { val bankrolls = getRealm().where().findAll() if (bankrolls.size == 1) { - this.transaction.bankroll = bankrolls.first() + bankrolls.first()?.let { br -> + this.transaction.bankroll = getRealm().copyFromRealm(br) + } } } } @@ -141,7 +140,7 @@ class TransactionDataFragment : EditableDataFragment(), StaticRowRepresentableDa when (val next = rows[index + 1]) { TransactionPropertiesRow.DATE, TransactionPropertiesRow.COMMENT -> {} else -> { - GlobalScope.launch(Dispatchers.Main) { + CoroutineScope(Dispatchers.Main).launch { delay(200) onRowSelected(0, next) }