diff --git a/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt b/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt index f45178ed7..f7564684a 100644 --- a/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt +++ b/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt @@ -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 = LinkedHashSet() for (alarm in getAlarms(taskId)) { diff --git a/app/src/main/java/com/todoroo/astrid/repeats/RepeatTaskHelper.kt b/app/src/main/java/com/todoroo/astrid/repeats/RepeatTaskHelper.kt index fe5b46e4a..385bccd52 100644 --- a/app/src/main/java/com/todoroo/astrid/repeats/RepeatTaskHelper.kt +++ b/app/src/main/java/com/todoroo/astrid/repeats/RepeatTaskHelper.kt @@ -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) } }