mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Update widgets at most once per minute
This commit is contained in:
@@ -28,6 +28,7 @@ import org.isoron.uhabits.core.tasks.*
|
|||||||
import org.isoron.uhabits.core.utils.*
|
import org.isoron.uhabits.core.utils.*
|
||||||
import org.isoron.uhabits.intents.*
|
import org.isoron.uhabits.intents.*
|
||||||
import javax.inject.*
|
import javax.inject.*
|
||||||
|
import kotlin.math.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A WidgetUpdater listens to the commands being executed by the application and
|
* A WidgetUpdater listens to the commands being executed by the application and
|
||||||
@@ -42,6 +43,8 @@ class WidgetUpdater
|
|||||||
private val intentScheduler: IntentScheduler
|
private val intentScheduler: IntentScheduler
|
||||||
) : CommandRunner.Listener {
|
) : CommandRunner.Listener {
|
||||||
|
|
||||||
|
private var lastUpdated = 0L
|
||||||
|
|
||||||
override fun onCommandExecuted(command: Command, refreshKey: Long?) {
|
override fun onCommandExecuted(command: Command, refreshKey: Long?) {
|
||||||
updateWidgets(refreshKey)
|
updateWidgets(refreshKey)
|
||||||
}
|
}
|
||||||
@@ -69,6 +72,10 @@ class WidgetUpdater
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun updateWidgets(modifiedHabitId: Long?) {
|
fun updateWidgets(modifiedHabitId: Long?) {
|
||||||
|
val now = DateUtils.getLocalTime()
|
||||||
|
if (abs(now - lastUpdated) < 60_000) return
|
||||||
|
lastUpdated = now
|
||||||
|
|
||||||
taskRunner.execute {
|
taskRunner.execute {
|
||||||
updateWidgets(modifiedHabitId, CheckmarkWidgetProvider::class.java)
|
updateWidgets(modifiedHabitId, CheckmarkWidgetProvider::class.java)
|
||||||
updateWidgets(modifiedHabitId, HistoryWidgetProvider::class.java)
|
updateWidgets(modifiedHabitId, HistoryWidgetProvider::class.java)
|
||||||
|
|||||||
Reference in New Issue
Block a user