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 3f6a2a11..5ec7fffc 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 @@ -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 diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/FilterCondition.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/FilterCondition.kt index a14eccda..3568edf1 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/FilterCondition.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/FilterCondition.kt @@ -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? = null + inline fun getValues(): ArrayList { return when (T::class) { Int::class -> ArrayList().apply { intValues?.map { add(it as T) } } 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 c731e9c6..99578a2a 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -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 {