From a6da708704f048146ac748b8044a87b7f6e01da7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 15 Apr 2025 20:21:52 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../core/ui/utils/RequestPushPermission.kt | 30 +++++++------------ .../ui/PushNotificationsScreen.kt | 3 -- .../PushNotificationsBottomSheet.kt | 7 ++--- 3 files changed, 13 insertions(+), 27 deletions(-) diff --git a/core/ui/src/main/java/com/tangem/core/ui/utils/RequestPushPermission.kt b/core/ui/src/main/java/com/tangem/core/ui/utils/RequestPushPermission.kt index f70452b5f7..4f6cc6d0df 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/utils/RequestPushPermission.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/utils/RequestPushPermission.kt @@ -1,9 +1,7 @@ package com.tangem.core.ui.utils import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import com.google.accompanist.permissions.ExperimentalPermissionsApi -import com.google.accompanist.permissions.isGranted import com.google.accompanist.permissions.rememberPermissionState /** @@ -13,24 +11,18 @@ import com.google.accompanist.permissions.rememberPermissionState @Suppress("LongParameterList") @OptIn(ExperimentalPermissionsApi::class) @Composable -fun requestPushPermission( - pushPermission: String?, - isClicked: Boolean, - onAllow: () -> Unit, - onDeny: () -> Unit, -): () -> Unit { +fun requestPushPermission(pushPermission: String?, onAllow: () -> Unit, onDeny: () -> Unit): () -> Unit { val permissionState = pushPermission?.let { permission -> - rememberPermissionState(permission = permission) - } - - // Check if user granted permission and close bottom sheet - LaunchedEffect(key1 = permissionState?.status, isClicked) { - if (!isClicked) return@LaunchedEffect - if (permissionState?.status?.isGranted == true) { - onAllow() - } else { - onDeny() - } + rememberPermissionState( + permission = permission, + onPermissionResult = { isGranted -> + if (isGranted) { + onAllow() + } else { + onDeny() + } + }, + ) } return if (permissionState == null) { diff --git a/features/push-notifications/impl/src/main/java/com/tangem/features/pushnotifications/impl/presentation/ui/PushNotificationsScreen.kt b/features/push-notifications/impl/src/main/java/com/tangem/features/pushnotifications/impl/presentation/ui/PushNotificationsScreen.kt index 01d07a68ab..76d8ea97f8 100644 --- a/features/push-notifications/impl/src/main/java/com/tangem/features/pushnotifications/impl/presentation/ui/PushNotificationsScreen.kt +++ b/features/push-notifications/impl/src/main/java/com/tangem/features/pushnotifications/impl/presentation/ui/PushNotificationsScreen.kt @@ -19,9 +19,7 @@ internal fun PushNotificationsScreen( onAllowPermission: () -> Unit, onDenyPermission: () -> Unit, ) { - var isClicked by remember { mutableStateOf(false) } val requestPushPermission = requestPushPermission( - isClicked = isClicked, onAllow = onAllowPermission, onDeny = onDenyPermission, pushPermission = getPushPermissionOrNull(), @@ -43,7 +41,6 @@ internal fun PushNotificationsScreen( primaryButton = ShowcaseButtonModel( buttonText = resourceReference(R.string.common_allow), onClick = { - isClicked = true onRequest() requestPushPermission() }, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/PushNotificationsBottomSheet.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/PushNotificationsBottomSheet.kt index 67fec39547..e61ceddcbf 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/PushNotificationsBottomSheet.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/PushNotificationsBottomSheet.kt @@ -6,13 +6,13 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import com.tangem.core.ui.components.PrimaryButton import com.tangem.core.ui.components.SecondaryButton -import com.tangem.core.ui.components.bottomsheets.sheet.TangemBottomSheet import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig +import com.tangem.core.ui.components.bottomsheets.sheet.TangemBottomSheet import com.tangem.core.ui.components.showcase.ShowcaseContent import com.tangem.core.ui.components.showcase.model.ShowcaseItemModel import com.tangem.core.ui.extensions.resourceReference @@ -34,10 +34,8 @@ internal fun PushNotificationsBottomSheet(config: TangemBottomSheetConfig) { @Composable private fun PushNotificationsSheetContent(content: PushNotificationsBottomSheetConfig, onDismiss: () -> Unit) { - var isClicked by remember { mutableStateOf(false) } val requestPushPermission = requestPushPermission( pushPermission = getPushPermissionOrNull(), - isClicked = isClicked, onAllow = { content.onAllow() onDismiss() @@ -84,7 +82,6 @@ private fun PushNotificationsSheetContent(content: PushNotificationsBottomSheetC PrimaryButton( text = stringResourceSafe(R.string.common_allow), onClick = { - isClicked = true content.onRequest() requestPushPermission() },