diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 02102c72..fd674a51 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -48,6 +48,7 @@ class PokerAnalyticsApplication : Application() { val realmConfiguration = RealmConfiguration.Builder() .name(Realm.DEFAULT_REALM_NAME) .schemaVersion(11) + .allowWritesOnUiThread(true) .migration(PokerAnalyticsMigration()) .initialData(Seed(this)) .build() 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 b206eaa7..c32bc113 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 @@ -33,23 +33,27 @@ class Patcher { patchBlindFormat() } - val realm = Realm.getDefaultInstance() - - val lockedTypes = - realm.where(TransactionType::class.java).equalTo("lock", true).findAll() - if (lockedTypes.size == 3) { - Preferences.executeOnce(Preferences.Keys.ADD_NEW_TRANSACTION_TYPES, context) { - val newTypes = arrayOf( - TransactionType.Value.STACKING_INCOMING, - TransactionType.Value.STACKING_OUTGOING - ) - realm.executeTransaction { - Seed.createDefaultTransactionTypes(newTypes, context, realm) + Preferences.executeOnce(Preferences.Keys.ADD_NEW_TRANSACTION_TYPES, context) { + + val realm = Realm.getDefaultInstance() + + val lockedTypes = + realm.where(TransactionType::class.java).equalTo("lock", true).findAll() + if (lockedTypes.size == 3) { + Preferences.executeOnce(Preferences.Keys.ADD_NEW_TRANSACTION_TYPES, context) { + val newTypes = arrayOf( + TransactionType.Value.STACKING_INCOMING, + TransactionType.Value.STACKING_OUTGOING + ) + realm.executeTransactionAsync { + Seed.createDefaultTransactionTypes(newTypes, context, realm) + } } } + + realm.close() } - realm.close() } private fun patchMissingTransactionTypes(context: Context) { @@ -59,7 +63,7 @@ class Patcher { val deposit = realm.where(TransactionType::class.java) .equalTo("kind", depositType.uniqueIdentifier).findFirst() if (deposit == null) { - realm.executeTransaction { + realm.executeTransactionAsync { Seed.createDefaultTransactionTypes(arrayOf(depositType), context, realm) } } @@ -68,7 +72,7 @@ class Patcher { val withdrawal = realm.where(TransactionType::class.java) .equalTo("kind", withdrawalType.uniqueIdentifier).findFirst() if (withdrawal == null) { - realm.executeTransaction { + realm.executeTransactionAsync { Seed.createDefaultTransactionTypes(arrayOf(withdrawalType), context, realm) } } @@ -83,7 +87,7 @@ class Patcher { val sessions = Filter.queryOn(realm, Query(QueryCondition.IsCash)) val results = realm.where(Result::class.java).findAll() - realm.executeTransaction { + realm.executeTransactionAsync { sets.forEach { it.computeStats() } @@ -101,7 +105,7 @@ class Patcher { private fun patchDefaultTransactionTypes(context: Context) { val realm = Realm.getDefaultInstance() - realm.executeTransaction { + realm.executeTransactionAsync { val tts = realm.where(TransactionType::class.java).findAll() tts.forEach { tt -> tt.kind?.let { kind -> @@ -115,7 +119,7 @@ class Patcher { private fun patchBlindFormat() { val realm = Realm.getDefaultInstance() - realm.executeTransaction { + realm.executeTransactionAsync { val sessions = realm.where(Session::class.java).findAll() sessions.forEach { session -> session.formatBlinds() @@ -131,7 +135,7 @@ class Patcher { private fun patchSessionSet() { val realm = Realm.getDefaultInstance() - realm.executeTransaction { + realm.executeTransactionAsync { realm.where(SessionSet::class.java).findAll().deleteAllFromRealm() val sessions = realm.where(Session::class.java).isNotNull("startDate").isNotNull("endDate").findAll() sessions.forEach { session -> @@ -148,7 +152,7 @@ class Patcher { */ private fun patchComputableResults() { val realm = Realm.getDefaultInstance() - realm.executeTransaction { + realm.executeTransactionAsync { val crs = realm.where(ComputableResult::class.java).findAll() crs.forEach { cr -> cr.session?.let { cr.updateWith(it) } diff --git a/app/src/main/java/net/pokeranalytics/android/model/utils/FavoriteSessionFinder.kt b/app/src/main/java/net/pokeranalytics/android/model/utils/FavoriteSessionFinder.kt index 3d203e45..ff122db3 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/utils/FavoriteSessionFinder.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/utils/FavoriteSessionFinder.kt @@ -75,8 +75,7 @@ class FavoriteSessionFinder { */ fun copyParametersFromFavoriteSession(session: Session, location: Location?, context: Context) { - val favoriteSession = - favoriteSession(session.type, location, session.realm, context) + val favoriteSession = favoriteSession(session.type, location, session.realm, context) favoriteSession?.let { fav -> diff --git a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt index 3d8b410f..eb870e80 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -225,6 +225,14 @@ class Preferences { } } +// fun executeOnceInThread(key: Keys, context: Context, executable: () -> Unit) { +// +// if (!getBoolean(key, context)) { +// Thread { executable.invoke() } +// setBoolean(key, true, context) +// } +// } + fun setResultCaptureType(bankroll: Bankroll, type: ResultCaptureType, context: Context) { val key = "${Keys.BANKROLL_RESULT_CAPTURE_TYPE}${bankroll.id}" val preferences = PreferenceManager.getDefaultSharedPreferences(context) diff --git a/build.gradle b/build.gradle index fe94299a..dbc01acb 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.1' + classpath 'com.android.tools.build:gradle:4.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'io.realm:realm-gradle-plugin:10.3.1'