From 6b057b70a43b49efa4fd63b432ec46af3ac9ac4a Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 9 May 2019 12:11:21 +0200 Subject: [PATCH] Improve timer for Session --- .../android/ui/fragment/SessionFragment.kt | 6 +++--- .../android/util/extensions/DateExtension.kt | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index b5e23f51..978c83e2 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -27,6 +27,7 @@ import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableDiffCallback import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow +import net.pokeranalytics.android.util.extensions.getNextMinuteInMilliseconds import java.util.* @@ -47,7 +48,6 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { private val refreshTimer: Runnable = object : Runnable { override fun run() { - // Refresh header each 30 seconds refreshTimer() handler.postDelayed(this, TIMER_DELAY) } @@ -194,7 +194,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) .setDuration(animationDuration) .setInterpolator(OvershootInterpolator()).start() - handler.postDelayed(refreshTimer, TIMER_DELAY) + handler.postDelayed(refreshTimer, Date().getNextMinuteInMilliseconds()) } SessionState.STARTED -> { sessionMenu?.findItem(R.id.restart)?.isVisible = true @@ -203,7 +203,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) .setDuration(animationDuration) .setInterpolator(OvershootInterpolator()).start() - handler.postDelayed(refreshTimer, TIMER_DELAY) + handler.postDelayed(refreshTimer, Date().getNextMinuteInMilliseconds()) } SessionState.PAUSED -> { sessionMenu?.findItem(R.id.restart)?.isVisible = true diff --git a/app/src/main/java/net/pokeranalytics/android/util/extensions/DateExtension.kt b/app/src/main/java/net/pokeranalytics/android/util/extensions/DateExtension.kt index 8efb3739..7c905504 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/extensions/DateExtension.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/extensions/DateExtension.kt @@ -140,4 +140,18 @@ fun Date.startOfYear() : Date { calendar.time = this.startOfMonth() calendar.set(Calendar.MONTH, 0) return calendar.time +} + +// Return the number of seconds until the next minute +fun Date.getNextMinuteInseconds() : Int { + return (getNextMinuteInMilliseconds() / 1000).toInt() +} + +// Return the number of milliseconds until the next minute +fun Date.getNextMinuteInMilliseconds() : Long { + val calendar = Calendar.getInstance() + calendar.add(Calendar.MINUTE, 1) + calendar.set(Calendar.SECOND, 0) + calendar.set(Calendar.MILLISECOND, 0) + return calendar.time.time - this.time } \ No newline at end of file