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 jobs: NotificationQueue) {
// TODO: remove runBlocking
fun rescheduleAlarms(taskId: Long, oldDueDate: Long, newDueDate: Long) = runBlocking {
if (newDueDate <= 0 || newDueDate <= oldDueDate) {
return@runBlocking
suspend fun rescheduleAlarms(taskId: Long, oldDueDate: Long, newDueDate: Long) {
if (oldDueDate <= 0 || newDueDate <= 0 || newDueDate <= oldDueDate) {
return
}
val alarms: MutableSet<Long> = LinkedHashSet()
for (alarm in getAlarms(taskId)) {

@ -63,7 +63,13 @@ class RepeatTaskHelper @Inject constructor(
task.setDueDateAdjustingHideUntil(newDueDate)
gcalHelper.rescheduleRepeatingTask(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)
}
}

Loading…
Cancel
Save