Updated on 2026-08-14
This commit is contained in:
parent
81d8760fca
commit
a6da708704
3 changed files with 13 additions and 27 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue