Fixes duration calculation

threading
Laurent 3 years ago
parent 2aeb2bf48f
commit dc90960bcb
  1. 14
      app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt
  2. 21
      app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt
  3. 1
      app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.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<Session>, start: Date, end: Date) {
Timber.d("***************************************************")
Timber.d("*** processFlatTimeInterval, from: $start, to $end")
Timber.d("***************************************************")
val sessions = matchingData<Session>(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<Session>) {
fun processSessions(sessions: Set<Session>) {
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<Session>) {
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

@ -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<Session>(id)?.let { s ->
s.tableSize = 6
SessionSetManager.sessionDateChanged(s)
}
}
}
return
AppGuard.endOfUse?.let { endDate ->
if (Date().after(endDate)) {
this.showEndOfUseMessage()

@ -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

Loading…
Cancel
Save