@@ -41,6 +41,7 @@ import com.ichi2.anki.dialogs.DeckSelectionDialog
4141import com.ichi2.anki.launchCatchingTask
4242import com.ichi2.anki.libanki.DeckId
4343import com.ichi2.anki.model.SelectableDeck
44+ import com.ichi2.anki.services.AlarmManagerService
4445import com.ichi2.anki.showError
4546import com.ichi2.anki.snackbar.BaseSnackbarBuilderProvider
4647import com.ichi2.anki.snackbar.SnackbarBuilder
@@ -186,6 +187,7 @@ class ScheduleReminders :
186187 Timber .d(" Handling add/edit dialog result: mode=%s reminder=%s" , modeOfFinishedDialog, newOrModifiedReminder)
187188 updateDatabaseForAddEditDialog(newOrModifiedReminder, modeOfFinishedDialog)
188189 updateUIForAddEditDialog(newOrModifiedReminder, modeOfFinishedDialog)
190+ updateAlarmsForAddEditDialog(newOrModifiedReminder, modeOfFinishedDialog)
189191 // Feedback
190192 showSnackbar(
191193 when (modeOfFinishedDialog) {
@@ -282,6 +284,28 @@ class ScheduleReminders :
282284 triggerUIUpdate()
283285 }
284286
287+ /* *
288+ * Update the AlarmManager notifications for the new or modified reminder.
289+ * @see handleAddEditDialogResult
290+ */
291+ private fun updateAlarmsForAddEditDialog (
292+ newOrModifiedReminder : ReviewReminder ? ,
293+ modeOfFinishedDialog : AddEditReminderDialog .DialogMode ,
294+ ) {
295+ if (modeOfFinishedDialog is AddEditReminderDialog .DialogMode .Edit ) {
296+ AlarmManagerService .unscheduleReviewReminderNotifications(
297+ requireContext(),
298+ modeOfFinishedDialog.reminderToBeEdited,
299+ )
300+ }
301+ newOrModifiedReminder?.let {
302+ AlarmManagerService .scheduleReviewReminderNotification(
303+ requireContext(),
304+ it,
305+ )
306+ }
307+ }
308+
285309 /* *
286310 * Retrieves a deck name from the collection for a given deck ID and passes it to the provided callback.
287311 * Used by the [ScheduleRemindersAdapter] because it cannot access the collection directly.
@@ -344,6 +368,12 @@ class ScheduleReminders :
344368 // Update UI
345369 reminder.enabled = newState
346370 triggerUIUpdate()
371+
372+ // Update scheduled AlarmManager notifications
373+ when (newState) {
374+ true -> AlarmManagerService .scheduleReviewReminderNotification(requireContext(), reminder)
375+ false -> AlarmManagerService .unscheduleReviewReminderNotifications(requireContext(), reminder)
376+ }
347377 }
348378
349379 /* *
0 commit comments