From 3fdcf472c6e8ea8cd85c7fb1addff7ff925427ca Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 8 May 2019 15:28:14 +0200 Subject: [PATCH] Patches lone ComputableResult --- .../android/PokerAnalyticsApplication.kt | 2 +- .../android/model/migrations/Patcher.kt | 20 ++++++++++++---- .../android/util/Preferences.kt | 23 +++++++++++++++---- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 1ba206d1..96374a08 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -55,7 +55,7 @@ class PokerAnalyticsApplication : Application() { // this.createFakeSessions() } - Patcher.patchBreaks() + Patcher.patchBreaks(applicationContext) } /** 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 7ebd0bce..bb4550a8 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 @@ -1,18 +1,17 @@ package net.pokeranalytics.android.model.migrations +import android.content.Context import io.realm.Realm import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.QueryCondition -import net.pokeranalytics.android.model.realm.Filter -import net.pokeranalytics.android.model.realm.Result -import net.pokeranalytics.android.model.realm.Session -import net.pokeranalytics.android.model.realm.SessionSet +import net.pokeranalytics.android.model.realm.* +import net.pokeranalytics.android.util.Preferences class Patcher { companion object { - fun patchBreaks() { + fun patchBreaks(context: Context) { val realm = Realm.getDefaultInstance() val sets = realm.where(SessionSet::class.java).findAll() @@ -30,6 +29,17 @@ class Patcher { it.computeNumberOfRebuy() } } + + if (!Preferences.getBoolean(Preferences.DBPatch.LONE_COMPUTABLE_RESULTS, context)) { + + // patch for https://console.firebase.google.com/project/poker-analytics-97998/crashlytics/app/android:net.pokeranalytics.android/issues/5cd2c884f8b88c29635caa16 + val loneComputableResults = realm.where(ComputableResult::class.java).isNull("session").findAll() + realm.executeTransaction { + loneComputableResults.deleteAllFromRealm() + } + Preferences.setBoolean(Preferences.DBPatch.LONE_COMPUTABLE_RESULTS, true, context) + } + realm.close() } 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 cfc53b7f..def5f091 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -6,7 +6,20 @@ import java.util.* class Preferences { - enum class Keys(var identifier: String) { + interface PreferenceKey { + var identifier: String + } + + enum class DBPatch(var key: String) : PreferenceKey { + LONE_COMPUTABLE_RESULTS("loneComputableResult"); + + override var identifier: String = "" + get() { + return "dbpatch." + this.key + } + } + + enum class Keys(override var identifier: String) : PreferenceKey { CURRENCY_CODE("CurrencyCode"), LOCALE_CODE("LocaleCode"), FIRST_LAUNCH("firstLaunch"), @@ -16,26 +29,26 @@ class Preferences { companion object { - fun setString(key: Keys, value: String, context: Context) { + fun setString(key: PreferenceKey, value: String, context: Context) { val preferences = PreferenceManager.getDefaultSharedPreferences(context) val editor = preferences.edit() editor.putString(key.identifier, value) editor.apply() } - fun getString(key: Keys, context: Context) : String? { + fun getString(key: PreferenceKey, context: Context) : String? { val preferences = PreferenceManager.getDefaultSharedPreferences(context) return preferences.getString(key.identifier, null) } - fun setBoolean(key: Keys, value: Boolean, context: Context) { + fun setBoolean(key: PreferenceKey, value: Boolean, context: Context) { val preferences = PreferenceManager.getDefaultSharedPreferences(context) val editor = preferences.edit() editor.putBoolean(key.identifier, value) editor.apply() } - fun getBoolean(key: Keys, context: Context, defaultValue: Boolean? = false) : Boolean { + fun getBoolean(key: PreferenceKey, context: Context, defaultValue: Boolean? = false) : Boolean { val preferences = PreferenceManager.getDefaultSharedPreferences(context) return preferences.getBoolean(key.identifier, defaultValue ?: false) }