From 46f8b3ae0d200b97211c340f05395885e2c630db Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 25 Oct 2022 11:19:55 +0200 Subject: [PATCH] Fixes issue with multiple lines appearing --- .../android/calculus/ReportWhistleBlower.kt | 34 ++++++++++++++++--- .../android/model/migrations/Patcher.kt | 2 +- .../android/ui/view/rows/StaticReport.kt | 2 +- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/ReportWhistleBlower.kt b/app/src/main/java/net/pokeranalytics/android/calculus/ReportWhistleBlower.kt index 374e7308..112093d9 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/ReportWhistleBlower.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/ReportWhistleBlower.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.calculus import android.content.Context +import android.os.CountDownTimer import io.realm.Realm import io.realm.RealmQuery import io.realm.RealmResults @@ -33,18 +34,20 @@ class ReportWhistleBlower(var context: Context) { private var paused: Boolean = false + private var timer: CountDownTimer? = null + init { val realm = Realm.getDefaultInstance() this.sessions = realm.where(Session::class.java).findAll() this.sessions?.addChangeListener { _ -> - launchReportTask() + requestReportLaunch() } this.results = realm.where(Result::class.java).findAll() this.results?.addChangeListener { _ -> - launchReportTask() + requestReportLaunch() } realm.close() @@ -58,15 +61,33 @@ class ReportWhistleBlower(var context: Context) { this.listeners.remove(listener) } - fun launchReportTask() { + fun requestReportLaunch() { Timber.d(">>> Launch report") if (paused) { return } + this.timer?.cancel() + + val launchStart = 100L + val timer = object: CountDownTimer(launchStart, launchStart) { + override fun onTick(p0: Long) { } + + override fun onFinish() { + launchReportTask() + } + } + this.timer = timer + timer.start() + + } + + private fun launchReportTask() { + synchronized(this) { this.currentTask?.cancel() + val reportTask = ReportTask(this, this.context) this.currentTask = reportTask reportTask.start() @@ -74,13 +95,18 @@ class ReportWhistleBlower(var context: Context) { } + /** + * Pauses the whistleblower, for example when importing data + */ fun pause() { this.paused = true + this.currentTask?.cancel() + this.currentTask = null } fun resume() { this.paused = false - this.launchReportTask() + this.requestReportLaunch() } fun has(performanceId: String): Boolean { 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 7e2f2deb..add25cf1 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 @@ -195,7 +195,7 @@ class Patcher { val performanceCount = realm.where().findAll().size if (sessionCount > 1 && performanceCount == 0) { - application.reportWhistleBlower?.launchReportTask() + application.reportWhistleBlower?.requestReportLaunch() } realm.close() } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rows/StaticReport.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rows/StaticReport.kt index eaede814..66d0bc2b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rows/StaticReport.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rows/StaticReport.kt @@ -56,7 +56,7 @@ sealed class StaticReport(override var uniqueIdentifier: Int) : RowRepresentable } -// val basicReports: Set = setOf(Stakes, TableSize) +// val basicReports: Set = setOf(General) val basicReports: Set = setOf(General, Stakes, TournamentBuyin, DayOfWeek, Location, TournamentType, Game, TableSize, Duration, OptimalDuration) }