Updated on 2026-08-14
This commit is contained in:
parent
d4a1d04023
commit
33764123ba
3 changed files with 22 additions and 15 deletions
|
|
@ -26,11 +26,10 @@ fun requestPushPermission(
|
|||
val permissionState = pushPermission?.let { permission ->
|
||||
val tempPermissionState = rememberPermissionState(permission = permission)
|
||||
rememberPermissionState(permission = permission) {
|
||||
when {
|
||||
it -> onAllow()
|
||||
!tempPermissionState.status.shouldShowRationale && !isFirstTimeAsking -> onOpenSettings()
|
||||
else -> onDeny()
|
||||
}
|
||||
val isGranted = tempPermissionState.status.isGranted
|
||||
val shouldShowRationale = tempPermissionState.status.shouldShowRationale
|
||||
|
||||
if (isGranted && !shouldShowRationale && !isFirstTimeAsking) onOpenSettings()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -159,22 +159,24 @@ internal class WalletViewModel @Inject constructor(
|
|||
|
||||
val isFirstTimeRequested = isFirstTimeAskingPermissionUseCase(PUSH_PERMISSION).getOrElse { true }
|
||||
val wasInitiallyAsk = shouldInitiallyAskPermissionUseCase(PUSH_PERMISSION).getOrElse { true }
|
||||
val onRequestLater: () -> Unit = if (wasInitiallyAsk) {
|
||||
clickIntents::onDelayAskPushPermission
|
||||
} else {
|
||||
clickIntents::onNeverAskPushPermission
|
||||
val onRequestLater: (Boolean) -> Unit = { isUserDismissed ->
|
||||
if (wasInitiallyAsk) {
|
||||
clickIntents.onDelayAskPushPermission(isUserDismissed)
|
||||
} else {
|
||||
clickIntents.onNeverAskPushPermission(isUserDismissed)
|
||||
}
|
||||
}
|
||||
stateHolder.showBottomSheet(
|
||||
content = PushNotificationsBottomSheetConfig(
|
||||
isFirstTimeRequested = isFirstTimeRequested,
|
||||
wasInitiallyAsk = wasInitiallyAsk,
|
||||
onRequest = clickIntents::onRequestPushPermission,
|
||||
onRequestLater = onRequestLater,
|
||||
onRequestLater = { onRequestLater(false) },
|
||||
onAllow = clickIntents::onAllowPushPermission,
|
||||
onDeny = clickIntents::onDenyPushPermission,
|
||||
openSettings = settingsManager::openSettings,
|
||||
),
|
||||
onDismiss = onRequestLater,
|
||||
onDismiss = { onRequestLater(true) },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ internal interface WalletPushPermissionClickIntents {
|
|||
|
||||
fun onRequestPushPermission()
|
||||
|
||||
fun onDelayAskPushPermission()
|
||||
fun onDelayAskPushPermission(isUserDismissed: Boolean)
|
||||
|
||||
fun onNeverAskPushPermission()
|
||||
fun onNeverAskPushPermission(isUserDismissed: Boolean)
|
||||
|
||||
fun onDenyPushPermission()
|
||||
|
||||
|
|
@ -32,7 +32,9 @@ internal class WalletPushPermissionClickIntentsImplementor @Inject constructor(
|
|||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
) : BaseWalletClickIntents(), WalletPushPermissionClickIntents {
|
||||
|
||||
private var isUserDismissedDialog: Boolean = true
|
||||
override fun onRequestPushPermission() {
|
||||
isUserDismissedDialog = false
|
||||
analyticsEventHandler.send(
|
||||
PushNotificationAnalyticEvents.ButtonAllow(AnalyticsParam.ScreensSources.Main),
|
||||
)
|
||||
|
|
@ -41,7 +43,9 @@ internal class WalletPushPermissionClickIntentsImplementor @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
override fun onDelayAskPushPermission() {
|
||||
override fun onDelayAskPushPermission(isUserDismissed: Boolean) {
|
||||
if (!isUserDismissedDialog) return
|
||||
isUserDismissedDialog = isUserDismissed
|
||||
viewModelScope.launch {
|
||||
analyticsEventHandler.send(
|
||||
PushNotificationAnalyticEvents.ButtonLater(AnalyticsParam.ScreensSources.Main),
|
||||
|
|
@ -50,7 +54,9 @@ internal class WalletPushPermissionClickIntentsImplementor @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
override fun onNeverAskPushPermission() {
|
||||
override fun onNeverAskPushPermission(isUserDismissed: Boolean) {
|
||||
if (!isUserDismissedDialog) return
|
||||
isUserDismissedDialog = isUserDismissed
|
||||
viewModelScope.launch {
|
||||
analyticsEventHandler.send(PushNotificationAnalyticEvents.ButtonCancel)
|
||||
neverRequestPermissionUseCase(PUSH_PERMISSION)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue