Updated on 2026-08-14
This commit is contained in:
parent
b9ed0818e4
commit
bf8c6e8c79
4 changed files with 9 additions and 14 deletions
|
|
@ -2,7 +2,6 @@ package com.tangem.core.ui.utils
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.MutableState
|
|
||||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||||
import com.google.accompanist.permissions.isGranted
|
import com.google.accompanist.permissions.isGranted
|
||||||
import com.google.accompanist.permissions.rememberPermissionState
|
import com.google.accompanist.permissions.rememberPermissionState
|
||||||
|
|
@ -16,7 +15,7 @@ import com.google.accompanist.permissions.rememberPermissionState
|
||||||
@Composable
|
@Composable
|
||||||
fun requestPushPermission(
|
fun requestPushPermission(
|
||||||
pushPermission: String?,
|
pushPermission: String?,
|
||||||
isClicked: MutableState<Boolean>,
|
isClicked: Boolean,
|
||||||
onAllow: () -> Unit,
|
onAllow: () -> Unit,
|
||||||
onDeny: () -> Unit,
|
onDeny: () -> Unit,
|
||||||
): () -> Unit {
|
): () -> Unit {
|
||||||
|
|
@ -26,7 +25,7 @@ fun requestPushPermission(
|
||||||
|
|
||||||
// Check if user granted permission and close bottom sheet
|
// Check if user granted permission and close bottom sheet
|
||||||
LaunchedEffect(key1 = permissionState?.status, isClicked) {
|
LaunchedEffect(key1 = permissionState?.status, isClicked) {
|
||||||
if (!isClicked.value) return@LaunchedEffect
|
if (!isClicked) return@LaunchedEffect
|
||||||
if (permissionState?.status?.isGranted == true) {
|
if (permissionState?.status?.isGranted == true) {
|
||||||
onAllow()
|
onAllow()
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import javax.inject.Inject
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
@ModelScoped
|
@ModelScoped
|
||||||
class PushNotificationsModel @Inject constructor(
|
internal class PushNotificationsModel @Inject constructor(
|
||||||
override val dispatchers: CoroutineDispatcherProvider,
|
override val dispatchers: CoroutineDispatcherProvider,
|
||||||
private val neverRequestPermissionUseCase: NeverRequestPermissionUseCase,
|
private val neverRequestPermissionUseCase: NeverRequestPermissionUseCase,
|
||||||
private val neverToInitiallyAskPermissionUseCase: NeverToInitiallyAskPermissionUseCase,
|
private val neverToInitiallyAskPermissionUseCase: NeverToInitiallyAskPermissionUseCase,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
package com.tangem.features.pushnotifications.impl.presentation.ui
|
package com.tangem.features.pushnotifications.impl.presentation.ui
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.systemBarsPadding
|
import androidx.compose.foundation.layout.systemBarsPadding
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.*
|
||||||
import androidx.compose.runtime.mutableStateOf
|
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import com.tangem.core.ui.components.showcase.Showcase
|
import com.tangem.core.ui.components.showcase.Showcase
|
||||||
import com.tangem.core.ui.components.showcase.model.ShowcaseButtonModel
|
import com.tangem.core.ui.components.showcase.model.ShowcaseButtonModel
|
||||||
|
|
@ -21,7 +19,7 @@ internal fun PushNotificationsScreen(
|
||||||
onAllowPermission: () -> Unit,
|
onAllowPermission: () -> Unit,
|
||||||
onDenyPermission: () -> Unit,
|
onDenyPermission: () -> Unit,
|
||||||
) {
|
) {
|
||||||
val isClicked = remember { mutableStateOf(false) }
|
var isClicked by remember { mutableStateOf(false) }
|
||||||
val requestPushPermission = requestPushPermission(
|
val requestPushPermission = requestPushPermission(
|
||||||
isClicked = isClicked,
|
isClicked = isClicked,
|
||||||
onAllow = onAllowPermission,
|
onAllow = onAllowPermission,
|
||||||
|
|
@ -45,7 +43,7 @@ internal fun PushNotificationsScreen(
|
||||||
primaryButton = ShowcaseButtonModel(
|
primaryButton = ShowcaseButtonModel(
|
||||||
buttonText = resourceReference(R.string.common_allow),
|
buttonText = resourceReference(R.string.common_allow),
|
||||||
onClick = {
|
onClick = {
|
||||||
isClicked.value = true
|
isClicked = true
|
||||||
onRequest()
|
onRequest()
|
||||||
requestPushPermission()
|
requestPushPermission()
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,7 @@ import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.*
|
||||||
import androidx.compose.runtime.mutableStateOf
|
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import com.tangem.core.ui.components.PrimaryButton
|
import com.tangem.core.ui.components.PrimaryButton
|
||||||
|
|
@ -36,7 +34,7 @@ internal fun PushNotificationsBottomSheet(config: TangemBottomSheetConfig) {
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun PushNotificationsSheetContent(content: PushNotificationsBottomSheetConfig, onDismiss: () -> Unit) {
|
private fun PushNotificationsSheetContent(content: PushNotificationsBottomSheetConfig, onDismiss: () -> Unit) {
|
||||||
val isClicked = remember { mutableStateOf(false) }
|
var isClicked by remember { mutableStateOf(false) }
|
||||||
val requestPushPermission = requestPushPermission(
|
val requestPushPermission = requestPushPermission(
|
||||||
pushPermission = getPushPermissionOrNull(),
|
pushPermission = getPushPermissionOrNull(),
|
||||||
isClicked = isClicked,
|
isClicked = isClicked,
|
||||||
|
|
@ -86,7 +84,7 @@ private fun PushNotificationsSheetContent(content: PushNotificationsBottomSheetC
|
||||||
PrimaryButton(
|
PrimaryButton(
|
||||||
text = stringResourceSafe(R.string.common_allow),
|
text = stringResourceSafe(R.string.common_allow),
|
||||||
onClick = {
|
onClick = {
|
||||||
isClicked.value = true
|
isClicked = true
|
||||||
content.onRequest()
|
content.onRequest()
|
||||||
requestPushPermission()
|
requestPushPermission()
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue