From dc90960bcb01f8dd925917445adf977cef852546 Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 3 Jan 2023 17:20:58 +0100 Subject: [PATCH] Fixes duration calculation --- .../android/model/utils/SessionSetManager.kt | 14 ++++++++----- .../android/ui/modules/feed/FeedFragment.kt | 21 +++++++++++++++---- .../ui/modules/session/SessionFragment.kt | 1 - 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt b/app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt index cbcdbc8f..8b255202 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt @@ -74,7 +74,7 @@ object SessionSetManager { private fun processSessions(realm: Realm) { -// Timber.d("***** processSessions, process count = ${sessionIdsToProcess.size}") + Timber.d("***** processSessions, process count = ${sessionIdsToProcess.size}") val start = this.start val end = this.end @@ -306,9 +306,12 @@ object SessionSetManager { private fun processFlatTimeInterval(realm: Realm, changedSessions: Set, start: Date, end: Date) { + Timber.d("***************************************************") Timber.d("*** processFlatTimeInterval, from: $start, to $end") + Timber.d("***************************************************") val sessions = matchingData(realm, start, end) + Timber.d("*** matching sessions: ${sessions.size}") val intervalsStore = IntervalsStore(sessions.toSet()) intervalsStore.processSessions(changedSessions) @@ -363,6 +366,7 @@ class IntervalsStore(sessionSet: Set) { fun processSessions(sessions: Set) { this.sessions.addAll(sessions) for (session in sessions) { + Timber.d("PROCESS > s = ${session.startDate} / e = ${session.endDate} ") loadIntervals(session) } } @@ -382,9 +386,7 @@ class IntervalsStore(sessionSet: Set) { this.intervals.add(fti) fti.sessions?.let { sessions -> - for (s in sessions) { - loadIntervals(s) - } + processSessions(sessions.toSet()) } } } @@ -409,6 +411,8 @@ class SessionInterval(session: Session) { this.start = session.startDate!! this.end = session.endDate + Timber.d("INTERVAL init: s = $start, e = $end") + this.addSession(session) } @@ -436,7 +440,7 @@ class SessionInterval(session: Session) { var currentInterval = SessionInterval(firstSession) intervals.add(currentInterval) - val remainingSessions = sessions.drop(1).sortedBy { it.startDate } + val remainingSessions = sorted.drop(1) for (session in remainingSessions) { val start = session.startDate!! val currentEnd = currentInterval.end diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt index 4d649407..4efb015f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt @@ -12,7 +12,10 @@ import com.android.billingclient.api.Purchase import com.google.android.material.badge.BadgeDrawable import com.google.android.material.badge.BadgeUtils import com.google.android.material.tabs.TabLayout -import io.realm.* +import io.realm.Realm +import io.realm.RealmModel +import io.realm.RealmResults +import io.realm.Sort import io.realm.kotlin.where import net.pokeranalytics.android.R import net.pokeranalytics.android.api.BlogPostApi @@ -21,10 +24,10 @@ import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.model.realm.handhistory.HandHistory +import net.pokeranalytics.android.model.utils.SessionSetManager import net.pokeranalytics.android.ui.activity.BillingActivity import net.pokeranalytics.android.ui.activity.components.RequestCode import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate -import net.pokeranalytics.android.ui.extensions.openUrl import net.pokeranalytics.android.ui.fragment.components.FilterableFragment import net.pokeranalytics.android.ui.fragment.components.RealmAsyncListener import net.pokeranalytics.android.ui.modules.data.EditableDataActivity @@ -37,12 +40,10 @@ import net.pokeranalytics.android.ui.modules.session.SessionActivity import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager import net.pokeranalytics.android.util.Preferences -import net.pokeranalytics.android.util.URL import net.pokeranalytics.android.util.billing.AppGuard import net.pokeranalytics.android.util.billing.PurchaseListener import net.pokeranalytics.android.util.extensions.count import net.pokeranalytics.android.util.extensions.findById -import timber.log.Timber import java.util.* class FeedFragment : FilterableFragment(), RowRepresentableDelegate, PurchaseListener, RealmAsyncListener { @@ -475,6 +476,18 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate, PurchaseLis */ private fun createNewTransaction() { + val sessions = getRealm().where(Session::class.java).findAll().map { it.id } + getRealm().executeTransactionAsync { r -> + for (id in sessions) { + r.findById(id)?.let { s -> + s.tableSize = 6 + SessionSetManager.sessionDateChanged(s) + } + } + } + + return + AppGuard.endOfUse?.let { endDate -> if (Date().after(endDate)) { this.showEndOfUseMessage() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt index 17396031..321f0c92 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt @@ -11,7 +11,6 @@ import androidx.appcompat.content.res.AppCompatResources import androidx.interpolator.view.animation.FastOutSlowInInterpolator import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DiffUtil -import io.realm.Realm import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch