From ca2b14263cf6f5995004ee8e37b5aa3ed2c6103f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ensar=20Saraj=C4=8Di=C4=87?= Date: Fri, 4 Aug 2023 16:51:34 +0200 Subject: [PATCH] Simplify handling full screen notifications --- .../clock/dialogs/EditAlarmDialog.kt | 2 +- .../clock/extensions/Activity.kt | 9 +++-- .../clock/fragments/AlarmFragment.kt | 33 +++++++++---------- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditAlarmDialog.kt b/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditAlarmDialog.kt index 98245023..0677985a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditAlarmDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditAlarmDialog.kt @@ -159,7 +159,7 @@ class EditAlarmDialog(val activity: SimpleActivity, val alarm: Alarm, val callba alarm.isEnabled = true var alarmId = alarm.id - activity.handleFullScreenNotificationsPermission { granted -> + activity.handleFullScreenNotificationsPermission { granted, _ -> if (granted) { if (alarm.id == 0) { alarmId = activity.dbHelper.insertAlarm(alarm) 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 f81dab7f..b7de4937 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Activity.kt @@ -7,13 +7,12 @@ import com.simplemobiletools.commons.extensions.canUseFullScreenIntent import com.simplemobiletools.commons.extensions.openFullScreenIntentSettings fun BaseSimpleActivity.handleFullScreenNotificationsPermission( - fullScreenNotificationsDeniedCallback: () -> Unit = {}, - notificationsCallback: (granted: Boolean) -> Unit, + notificationsCallback: (granted: Boolean, fullScreenGranted: Boolean) -> Unit, ) { handleNotificationPermission { granted -> if (granted) { if (canUseFullScreenIntent()) { - notificationsCallback(true) + notificationsCallback(true, true) } else { PermissionRequiredDialog( activity = this, @@ -22,12 +21,12 @@ fun BaseSimpleActivity.handleFullScreenNotificationsPermission( openFullScreenIntentSettings(BuildConfig.APPLICATION_ID) }, negativeActionCallback = { - fullScreenNotificationsDeniedCallback() + notificationsCallback(true, false) } ) } } else { - notificationsCallback(false) + notificationsCallback(false, 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 9f452f47..daee1629 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt @@ -124,28 +124,25 @@ class AlarmFragment : Fragment(), ToggleAlarmInterface { } override fun alarmToggled(id: Int, isEnabled: Boolean) { - (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() + (activity as SimpleActivity).handleFullScreenNotificationsPermission { granted, fullScreenGranted -> + if (granted && fullScreenGranted) { + if (requireContext().dbHelper.updateAlarmEnabledState(id, isEnabled)) { + val alarm = alarms.firstOrNull { it.id == id } ?: return@handleFullScreenNotificationsPermission + alarm.isEnabled = isEnabled + checkAlarmState(alarm) } else { - PermissionRequiredDialog( - activity as SimpleActivity, - com.simplemobiletools.commons.R.string.allow_notifications_reminders, - { (activity as SimpleActivity).openNotificationSettings() }) + requireActivity().toast(com.simplemobiletools.commons.R.string.unknown_error_occurred) } - }, - fullScreenNotificationsDeniedCallback = { + requireContext().updateWidgets() + } else if (!fullScreenGranted) { setupAlarms() + } else { + PermissionRequiredDialog( + activity as SimpleActivity, + com.simplemobiletools.commons.R.string.allow_notifications_reminders, + { (activity as SimpleActivity).openNotificationSettings() }) } - ) + } } private fun checkAlarmState(alarm: Alarm) {