Fix crash due to remaining blind filters in databases

powerreport
Laurent 3 years ago
parent 33f04d9519
commit 0526249a6d
  1. 14
      app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt
  2. 6
      app/src/main/java/net/pokeranalytics/android/model/realm/FilterCondition.kt
  3. 3
      app/src/main/java/net/pokeranalytics/android/util/Preferences.kt

@ -41,6 +41,9 @@ class Patcher {
Preferences.executeOnce(Preferences.Keys.PATCH_NEGATIVE_LIMITS, context) {
patchNegativeLimits()
}
Preferences.executeOnce(Preferences.Keys.CLEAN_BLINDS_FILTERS, context) {
cleanBlindsFilters()
}
Preferences.executeOnce(Preferences.Keys.ADD_NEW_TRANSACTION_TYPES, context) {
@ -164,6 +167,17 @@ class Patcher {
realm.close()
}
private fun cleanBlindsFilters() {
val realm = Realm.getDefaultInstance()
realm.executeTransaction {
val blindFilterConditions = realm.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()
filters.deleteAllFromRealm()
}
realm.close()
}
/*
02/09/19: A bug with the session set management made them kept instead of deleted,
thus making duration calculation wrong

@ -2,11 +2,12 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmResults
import io.realm.annotations.LinkingObjects
import net.pokeranalytics.android.exceptions.PokerAnalyticsException
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.ui.view.rows.FilterSectionRow
import java.util.*
import kotlin.collections.ArrayList
open class FilterCondition() : RealmObject() {
@ -49,6 +50,9 @@ open class FilterCondition() : RealmObject() {
var stringValue: String? = null
var operator: Int? = null
@LinkingObjects("filterConditions")
val filters: RealmResults<Filter>? = null
inline fun <reified T> getValues(): ArrayList <T> {
return when (T::class) {
Int::class -> ArrayList<T>().apply { intValues?.map { add(it as T) } }

@ -44,7 +44,8 @@ class Preferences {
SHOW_BLOG_TIPS("showBlogTips"),
LAST_REVIEW_REQUEST_DATE("lastReviewRequestDate"),
PATCH_NEGATIVE_LIMITS("negativeLimits"),
PATCH_STAKES("patchStakes")
PATCH_STAKES("patchStakes"),
CLEAN_BLINDS_FILTERS("deleteBlindsFilters")
}
enum class FeedMessage {

Loading…
Cancel
Save