From 0de86ac66cbc4779c5dc18b2fbe459a25452428f Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Tue, 24 Nov 2020 06:53:20 -0600 Subject: [PATCH] Update widgets at most once per minute --- .../main/java/org/isoron/uhabits/widgets/WidgetUpdater.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/WidgetUpdater.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/WidgetUpdater.kt index 3427bce26..81e3619ab 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/WidgetUpdater.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/WidgetUpdater.kt @@ -28,6 +28,7 @@ import org.isoron.uhabits.core.tasks.* import org.isoron.uhabits.core.utils.* import org.isoron.uhabits.intents.* import javax.inject.* +import kotlin.math.* /** * A WidgetUpdater listens to the commands being executed by the application and @@ -42,6 +43,8 @@ class WidgetUpdater private val intentScheduler: IntentScheduler ) : CommandRunner.Listener { + private var lastUpdated = 0L + override fun onCommandExecuted(command: Command, refreshKey: Long?) { updateWidgets(refreshKey) } @@ -69,6 +72,10 @@ class WidgetUpdater } fun updateWidgets(modifiedHabitId: Long?) { + val now = DateUtils.getLocalTime() + if (abs(now - lastUpdated) < 60_000) return + lastUpdated = now + taskRunner.execute { updateWidgets(modifiedHabitId, CheckmarkWidgetProvider::class.java) updateWidgets(modifiedHabitId, HistoryWidgetProvider::class.java)