From 788c6a597d8330e95cc87f2accb6775df393fe81 Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 13 Jul 2022 12:00:45 +0200 Subject: [PATCH] Fixes crash with possible negative limit --- .../android/model/migrations/Patcher.kt | 14 ++++++++++++++ .../pokeranalytics/android/model/realm/Session.kt | 7 +++++++ .../net/pokeranalytics/android/util/Preferences.kt | 3 ++- 3 files changed, 23 insertions(+), 1 deletion(-) 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 5cf14b5a..a822febc 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 @@ -35,6 +35,9 @@ class Patcher { Preferences.executeOnce(Preferences.Keys.PATCH_BLINDS_FORMAT, context) { patchBlindFormat() } + Preferences.executeOnce(Preferences.Keys.PATCH_NEGATIVE_LIMITS, context) { + patchNegativeLimits() + } Preferences.executeOnce(Preferences.Keys.ADD_NEW_TRANSACTION_TYPES, context) { @@ -131,6 +134,17 @@ class Patcher { realm.close() } + private fun patchNegativeLimits() { + val realm = Realm.getDefaultInstance() + realm.executeTransaction { + val sessions = realm.where(Session::class.java).lessThan("limit", 0).findAll() + sessions.forEach { session -> + session.limit = null + } + } + 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/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 000052c1..9b415e4a 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -271,6 +271,13 @@ open class Session : RealmObject(), Savable, RowUpdatable, RowRepresentable, Tim // The limit type: NL, PL... var limit: Int? = null + set(value) { + field = if (value != null && value >= 0) { + value + } else { + null + } + } // The game played during the Session var game: Game? = null 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 54a4bac4..03c4868f 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -42,7 +42,8 @@ class Preferences { LATEST_BLOG_POST_ID_DISPLAYED("latestBlogPostIdDisplayed"), LAST_BLOG_TIPS_RETRIEVAL("lastBlogTipsRetrieval"), SHOW_BLOG_TIPS("showBlogTips"), - LAST_REVIEW_REQUEST_DATE("lastReviewRequestDate") + LAST_REVIEW_REQUEST_DATE("lastReviewRequestDate"), + PATCH_NEGATIVE_LIMITS("negativeLimits") } enum class FeedMessage {