@@ -37,6 +37,7 @@ import com.ichi2.anki.SingleFragmentActivity
3737import com.ichi2.anki.dialogs.DeckSelectionDialog
3838import com.ichi2.anki.launchCatchingTask
3939import com.ichi2.anki.libanki.DeckId
40+ import com.ichi2.anki.services.AlarmManagerService
4041import com.ichi2.anki.showError
4142import com.ichi2.anki.snackbar.BaseSnackbarBuilderProvider
4243import com.ichi2.anki.snackbar.SnackbarBuilder
@@ -181,6 +182,7 @@ class ScheduleReminders :
181182 Timber .d(" Handling add/edit dialog result: mode=%s reminder=%s" , modeOfFinishedDialog, newOrModifiedReminder)
182183 updateDatabaseForAddEditDialog(newOrModifiedReminder, modeOfFinishedDialog)
183184 updateUIForAddEditDialog(newOrModifiedReminder, modeOfFinishedDialog)
185+ updateAlarmsForAddEditDialog(newOrModifiedReminder, modeOfFinishedDialog)
184186 // Feedback
185187 showSnackbar(
186188 when (modeOfFinishedDialog) {
@@ -277,6 +279,28 @@ class ScheduleReminders :
277279 triggerUIUpdate()
278280 }
279281
282+ /* *
283+ * Update the AlarmManager notifications for the new or modified reminder.
284+ * @see handleAddEditDialogResult
285+ */
286+ private fun updateAlarmsForAddEditDialog (
287+ newOrModifiedReminder : ReviewReminder ? ,
288+ modeOfFinishedDialog : AddEditReminderDialog .DialogMode ,
289+ ) {
290+ if (modeOfFinishedDialog is AddEditReminderDialog .DialogMode .Edit ) {
291+ AlarmManagerService .unscheduleReviewReminderNotifications(
292+ requireContext(),
293+ modeOfFinishedDialog.reminderToBeEdited,
294+ )
295+ }
296+ newOrModifiedReminder?.let {
297+ AlarmManagerService .scheduleReviewReminderNotification(
298+ requireContext(),
299+ it,
300+ )
301+ }
302+ }
303+
280304 /* *
281305 * Sets a TextView's text based on a [ReviewReminderScope].
282306 * The text is either the scope's associated deck's name, or "All Decks" if the scope is global.
@@ -329,6 +353,12 @@ class ScheduleReminders :
329353 // Update UI
330354 reminder.enabled = newState
331355 triggerUIUpdate()
356+
357+ // Update scheduled AlarmManager notifications
358+ when (newState) {
359+ true -> AlarmManagerService .scheduleReviewReminderNotification(requireContext(), reminder)
360+ false -> AlarmManagerService .unscheduleReviewReminderNotifications(requireContext(), reminder)
361+ }
332362 }
333363
334364 /* *
0 commit comments