From 72b624acbe729dbaff5e7aa7cf3b4e17bc91236f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ensar=20Saraj=C4=8Di=C4=87?= Date: Fri, 4 Aug 2023 14:07:11 +0200 Subject: [PATCH] Add handling for fullScreenIntentPermission --- app/build.gradle | 6 ++-- .../clock/dialogs/EditAlarmDialog.kt | 2 +- .../clock/extensions/Activity.kt | 30 +++++++++++++++++++ .../clock/fragments/AlarmFragment.kt | 4 +-- 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/clock/extensions/Activity.kt diff --git a/app/build.gradle b/app/build.gradle index 18c5d756..594d0c0a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,12 +10,12 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 33 + compileSdkVersion 34 defaultConfig { applicationId "com.simplemobiletools.clock" minSdkVersion 23 - targetSdkVersion 33 + targetSdkVersion 34 versionCode 39 versionName "5.10.3" setProperty("archivesBaseName", "clock") @@ -64,7 +64,7 @@ android { } dependencies { - implementation 'com.github.SimpleMobileTools:Simple-Commons:42733f39a4' + implementation 'com.github.esensar:Simple-Commons:2d54383217' implementation 'com.facebook.stetho:stetho:1.5.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'io.github.ShawnLin013:number-picker:2.4.13' 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 d9ea6acd..06de74fa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditAlarmDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditAlarmDialog.kt @@ -154,7 +154,7 @@ class EditAlarmDialog(val activity: SimpleActivity, val alarm: Alarm, val callba alarm.isEnabled = true var alarmId = alarm.id - activity.handleNotificationPermission { 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 new file mode 100644 index 00000000..3aa2e274 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Activity.kt @@ -0,0 +1,30 @@ +package com.simplemobiletools.clock.extensions + +import com.simplemobiletools.clock.R +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.dialogs.PermissionRequiredDialog +import com.simplemobiletools.commons.extensions.canUseFullScreenIntent + +fun BaseSimpleActivity.handleFullScreenNotificationsPermission(callback: (granted: Boolean) -> Unit) { + handleNotificationPermission { granted -> + if (granted) { + if (canUseFullScreenIntent()) { + callback(true) + } else { + PermissionRequiredDialog( + activity = this, + textId = R.string.allow_full_screen_notifications_reminders, + positiveActionCallback = { + callback(true) + }, + negativeActionCallback = { + // It is not critical to have full screen intents, so we should allow users to continue using the app + callback(true) + } + ) + } + } else { + callback(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 817daae7..0a34f975 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt @@ -127,10 +127,10 @@ class AlarmFragment : Fragment(), ToggleAlarmInterface { } override fun alarmToggled(id: Int, isEnabled: Boolean) { - (activity as SimpleActivity).handleNotificationPermission { granted -> + (activity as SimpleActivity).handleFullScreenNotificationsPermission { granted -> if (granted) { if (requireContext().dbHelper.updateAlarmEnabledState(id, isEnabled)) { - val alarm = alarms.firstOrNull { it.id == id } ?: return@handleNotificationPermission + val alarm = alarms.firstOrNull { it.id == id } ?: return@handleFullScreenNotificationsPermission alarm.isEnabled = isEnabled checkAlarmState(alarm) } else {