Skip to content

Commit

Permalink
Remove alarms/reminders on task deletion
Browse files Browse the repository at this point in the history
  • Loading branch information
Hafizzle committed Jan 1, 2024
1 parent 4e18875 commit 7ee9b60
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,13 @@ class TaskAlarmManager(
}


private fun removeAlarmsForTask(task: Task) {
task.reminders?.let {
for (reminder in it) {
this.removeAlarmForRemindersItem(reminder)
fun removeAlarmsForTask(task: Task) {
CoroutineScope(Dispatchers.IO).launch {
task.reminders?.let { reminders ->
// Remove not only the immediate reminder, but also the next however many (upcomingReminderOccurrencesToSchedule) reminders
reminders.forEachIndexed { index, reminder ->
removeAlarmForRemindersItem(reminder, index)
}
}
}
}
Expand Down Expand Up @@ -167,10 +170,10 @@ class TaskAlarmManager(
}
}

private fun removeAlarmForRemindersItem(remindersItem: RemindersItem) {
private fun removeAlarmForRemindersItem(remindersItem: RemindersItem, occurrenceIndex: Int? = null) {
val intent = Intent(context, TaskReceiver::class.java)
intent.action = remindersItem.id
val intentId = remindersItem.id?.hashCode() ?: (0 and 0xfffffff)
val intentId = if (occurrenceIndex != null) (remindersItem.id?.hashCode() ?: (0 and 0xfffffff)) + occurrenceIndex else (remindersItem.id?.hashCode() ?: (0 and 0xfffffff))
val sender = PendingIntent.getBroadcast(
context,
intentId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -835,6 +835,8 @@ class TaskFormActivity : BaseActivity() {
task?.id?.let {
lifecycleScope.launch(Dispatchers.Main) {
taskRepository.deleteTask(it)
val taskCopy = task
taskCopy?.let { taskAlarmManager.removeAlarmsForTask(it) }
}
}
finish()
Expand Down

0 comments on commit 7ee9b60

Please sign in to comment.