From eae63898e3dc8812de012556d7f0feed210a2f2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ensar=20Saraj=C4=8Di=C4=87?= Date: Thu, 5 Oct 2023 09:43:37 +0200 Subject: [PATCH] Use compose `PermissionRequiredAlertDialog` for sleep timer permission --- .../flashlight/activities/MainActivity.kt | 32 +++++++++++++------ gradle/libs.versions.toml | 2 +- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/flashlight/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/flashlight/activities/MainActivity.kt index bccff37..8d385ae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/flashlight/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/flashlight/activities/MainActivity.kt @@ -20,6 +20,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.ui.res.stringResource import androidx.core.content.ContextCompat import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.Lifecycle @@ -31,7 +32,7 @@ import com.simplemobiletools.commons.compose.alert_dialog.rememberAlertDialogSta import com.simplemobiletools.commons.compose.extensions.onEventValue import com.simplemobiletools.commons.compose.theme.AppThemeSurface import com.simplemobiletools.commons.dialogs.ConfirmationDialog -import com.simplemobiletools.commons.dialogs.PermissionRequiredDialog +import com.simplemobiletools.commons.dialogs.PermissionRequiredAlertDialog import com.simplemobiletools.commons.dialogs.RadioGroupAlertDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* @@ -109,6 +110,21 @@ class MainActivity : ComponentActivity() { } } + val sleepTimerPermissionDialogState = rememberAlertDialogState().apply { + DialogMember { + PermissionRequiredAlertDialog( + alertDialogState = this, + text = stringResource(id = R.string.allow_alarm_sleep_timer), + positiveActionCallback = { + openRequestExactAlarmSettings(baseConfig.appId) + }, + negativeActionCallback = { + sleepTimerDialogState.show() + } + ) + } + } + MainScreen( flashlightButton = { val flashlightActive by viewModel.flashlightOn.collectAsStateWithLifecycle() @@ -193,7 +209,7 @@ class MainActivity : ComponentActivity() { openSettings = ::launchSettings, openAbout = ::launchAbout, openSleepTimer = { - showSleepTimerPermission { + showSleepTimerPermission(sleepTimerPermissionDialogState) { sleepTimerDialogState.show() } }, @@ -302,15 +318,13 @@ class MainActivity : ComponentActivity() { ) } - private fun showSleepTimerPermission(callback: () -> Unit) { + private fun showSleepTimerPermission( + showSleepTimerDialogState: AlertDialogState, + callback: () -> Unit + ) { val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager if (isSPlus() && !alarmManager.canScheduleExactAlarms()) { - PermissionRequiredDialog( - this, - com.simplemobiletools.commons.R.string.allow_alarm_sleep_timer, - positiveActionCallback = { openRequestExactAlarmSettings(baseConfig.appId) }, - negativeActionCallback = { callback() } - ) + showSleepTimerDialogState.show() return } callback() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 695fe27..f7d2911 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ androidx-customView = "1.2.0-alpha02" androidx-customViewPooling = "1.0.0" androidx-lifecycle = "2.7.0-alpha02" #Simple tools -simple-commons = "dfe8acfbf9" +simple-commons = "ffe7d33846" #Compose composeActivity = "1.8.0-rc01" compose = "1.6.0-alpha06"