Try to guess original due date when rescheduling

pull/1196/head
Alex Baker 5 years ago
parent 7aa8638dd1
commit 265373d46c

@ -24,10 +24,9 @@ class AlarmService @Inject constructor(
private val alarmDao: AlarmDao, private val alarmDao: AlarmDao,
private val jobs: NotificationQueue) { private val jobs: NotificationQueue) {
// TODO: remove runBlocking suspend fun rescheduleAlarms(taskId: Long, oldDueDate: Long, newDueDate: Long) {
fun rescheduleAlarms(taskId: Long, oldDueDate: Long, newDueDate: Long) = runBlocking { if (oldDueDate <= 0 || newDueDate <= 0 || newDueDate <= oldDueDate) {
if (newDueDate <= 0 || newDueDate <= oldDueDate) { return
return@runBlocking
} }
val alarms: MutableSet<Long> = LinkedHashSet() val alarms: MutableSet<Long> = LinkedHashSet()
for (alarm in getAlarms(taskId)) { for (alarm in getAlarms(taskId)) {

@ -63,7 +63,13 @@ class RepeatTaskHelper @Inject constructor(
task.setDueDateAdjustingHideUntil(newDueDate) task.setDueDateAdjustingHideUntil(newDueDate)
gcalHelper.rescheduleRepeatingTask(task) gcalHelper.rescheduleRepeatingTask(task)
taskDao.save(task) taskDao.save(task)
alarmService.rescheduleAlarms(task.id, oldDueDate, newDueDate) alarmService.rescheduleAlarms(
task.id,
oldDueDate
.takeIf { it > 0 }
// try to guess original due date when no due date was set
?: newDueDate - (computeNextDueDate(task, recurrence, repeatAfterCompletion) - newDueDate),
newDueDate)
localBroadcastManager.broadcastRepeat(task.id, oldDueDate, newDueDate) localBroadcastManager.broadcastRepeat(task.id, oldDueDate, newDueDate)
} }
} }

Loading…
Cancel
Save