Updated on 2026-08-14

This commit is contained in:
Tangem 2025-04-15 20:21:52 +05:00
parent 81d8760fca
commit a6da708704
3 changed files with 13 additions and 27 deletions

View file

@ -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) {

View file

@ -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()
},

View file

@ -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()
},