diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Activity.kt index b59841ab..f81dab7f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Activity.kt @@ -6,22 +6,28 @@ import com.simplemobiletools.commons.dialogs.PermissionRequiredDialog import com.simplemobiletools.commons.extensions.canUseFullScreenIntent import com.simplemobiletools.commons.extensions.openFullScreenIntentSettings -fun BaseSimpleActivity.handleFullScreenNotificationsPermission(callback: (granted: Boolean) -> Unit) { +fun BaseSimpleActivity.handleFullScreenNotificationsPermission( + fullScreenNotificationsDeniedCallback: () -> Unit = {}, + notificationsCallback: (granted: Boolean) -> Unit, +) { handleNotificationPermission { granted -> if (granted) { if (canUseFullScreenIntent()) { - callback(true) + notificationsCallback(true) } else { PermissionRequiredDialog( activity = this, textId = com.simplemobiletools.commons.R.string.allow_full_screen_notifications_reminders, positiveActionCallback = { openFullScreenIntentSettings(BuildConfig.APPLICATION_ID) + }, + negativeActionCallback = { + fullScreenNotificationsDeniedCallback() } ) } } else { - callback(false) + notificationsCallback(false) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt index efa523c5..9f452f47 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt @@ -124,23 +124,28 @@ class AlarmFragment : Fragment(), ToggleAlarmInterface { } override fun alarmToggled(id: Int, isEnabled: Boolean) { - (activity as SimpleActivity).handleFullScreenNotificationsPermission { granted -> - if (granted) { - if (requireContext().dbHelper.updateAlarmEnabledState(id, isEnabled)) { - val alarm = alarms.firstOrNull { it.id == id } ?: return@handleFullScreenNotificationsPermission - alarm.isEnabled = isEnabled - checkAlarmState(alarm) + (activity as SimpleActivity).handleFullScreenNotificationsPermission( + notificationsCallback = { granted -> + if (granted) { + if (requireContext().dbHelper.updateAlarmEnabledState(id, isEnabled)) { + val alarm = alarms.firstOrNull { it.id == id } ?: return@handleFullScreenNotificationsPermission + alarm.isEnabled = isEnabled + checkAlarmState(alarm) + } else { + requireActivity().toast(com.simplemobiletools.commons.R.string.unknown_error_occurred) + } + requireContext().updateWidgets() } else { - requireActivity().toast(com.simplemobiletools.commons.R.string.unknown_error_occurred) + PermissionRequiredDialog( + activity as SimpleActivity, + com.simplemobiletools.commons.R.string.allow_notifications_reminders, + { (activity as SimpleActivity).openNotificationSettings() }) } - requireContext().updateWidgets() - } else { - PermissionRequiredDialog( - activity as SimpleActivity, - com.simplemobiletools.commons.R.string.allow_notifications_reminders, - { (activity as SimpleActivity).openNotificationSettings() }) + }, + fullScreenNotificationsDeniedCallback = { + setupAlarms() } - } + ) } private fun checkAlarmState(alarm: Alarm) {