Update alarms after completion transaction

pull/2906/head
Alex Baker 2 years ago
parent 86ecd3cf81
commit 97a3f074d0

@ -6,13 +6,14 @@
package com.todoroo.astrid.alarms package com.todoroo.astrid.alarms
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.data.entity.Alarm
import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE
import org.tasks.data.dao.AlarmDao import org.tasks.data.dao.AlarmDao
import org.tasks.data.dao.TaskDao import org.tasks.data.dao.TaskDao
import org.tasks.data.entity.Alarm
import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE
import org.tasks.jobs.AlarmEntry import org.tasks.jobs.AlarmEntry
import org.tasks.jobs.WorkManager import org.tasks.jobs.WorkManager
import org.tasks.notifications.NotificationManager import org.tasks.notifications.NotificationManager
import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils2.currentTimeMillis import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -56,7 +57,6 @@ class AlarmService @Inject constructor(
changed = true changed = true
} }
if (changed) { if (changed) {
workManager.triggerNotifications()
localBroadcastManager.broadcastRefreshList() localBroadcastManager.broadcastRefreshList()
} }
return changed return changed
@ -81,7 +81,7 @@ class AlarmService @Inject constructor(
val alarmEntries = alarms.mapNotNull { val alarmEntries = alarms.mapNotNull {
alarmCalculator.toAlarmEntry(task, it) alarmCalculator.toAlarmEntry(task, it)
} }
val (now, later) = alarmEntries.partition { it.time <= currentTimeMillis() } val (now, later) = alarmEntries.partition { it.time <= DateTime().startOfMinute().plusMinutes(1).millis }
later later
.find { it.type == TYPE_SNOOZE } .find { it.type == TYPE_SNOOZE }
?.let { future.add(it) } ?.let { future.add(it) }

@ -101,6 +101,8 @@ class TaskDao @Inject constructor(
suspend fun save(task: Task, original: Task?) { suspend fun save(task: Task, original: Task?) {
if (taskDao.update(task, original)) { if (taskDao.update(task, original)) {
afterUpdate(task, original) afterUpdate(task, original)
workManager.triggerNotifications()
workManager.scheduleRefresh()
} }
} }
@ -122,8 +124,6 @@ class TaskDao @Inject constructor(
if (completionDateModified || deletionDateModified) { if (completionDateModified || deletionDateModified) {
geofenceApi.update(task.id) geofenceApi.update(task.id)
} }
workManager.triggerNotifications()
workManager.scheduleRefresh()
if (!task.isSuppressRefresh()) { if (!task.isSuppressRefresh()) {
localBroadcastManager.broadcastRefresh() localBroadcastManager.broadcastRefresh()
} }

@ -14,6 +14,7 @@ import org.tasks.LocalBroadcastManager
import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.CaldavDao
import org.tasks.data.db.Database import org.tasks.data.db.Database
import org.tasks.data.entity.Task import org.tasks.data.entity.Task
import org.tasks.jobs.WorkManager
import org.tasks.notifications.NotificationManager import org.tasks.notifications.NotificationManager
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis import org.tasks.time.DateTimeUtils2.currentTimeMillis
@ -29,7 +30,8 @@ class TaskCompleter @Inject internal constructor(
private val localBroadcastManager: LocalBroadcastManager, private val localBroadcastManager: LocalBroadcastManager,
private val repeatTaskHelper: RepeatTaskHelper, private val repeatTaskHelper: RepeatTaskHelper,
private val caldavDao: CaldavDao, private val caldavDao: CaldavDao,
private val gCalHelper: GCalHelper private val gCalHelper: GCalHelper,
private val workManager: WorkManager,
) { ) {
suspend fun setComplete(taskId: Long) = suspend fun setComplete(taskId: Long) =
taskDao taskDao
@ -93,6 +95,8 @@ class TaskCompleter @Inject internal constructor(
} }
} }
} }
workManager.triggerNotifications()
workManager.scheduleRefresh()
if (completed && notificationManager.currentInterruptionFilter == INTERRUPTION_FILTER_ALL) { if (completed && notificationManager.currentInterruptionFilter == INTERRUPTION_FILTER_ALL) {
preferences preferences
.completionSound .completionSound

Loading…
Cancel
Save