Updated on 2026-08-14
This commit is contained in:
parent
07d5ede58c
commit
e1b50efbe0
16 changed files with 21 additions and 222 deletions
|
|
@ -17,19 +17,15 @@ sealed class PushNotificationAnalyticEvents(
|
|||
),
|
||||
)
|
||||
|
||||
data class ButtonLater(
|
||||
data class ButtonCancel(
|
||||
val source: AnalyticsParam.ScreensSources,
|
||||
) : PushNotificationAnalyticEvents(
|
||||
event = "Button - Later",
|
||||
event = "Button - Cancel",
|
||||
params = mapOf(
|
||||
AnalyticsParam.SOURCE to source.value,
|
||||
),
|
||||
)
|
||||
|
||||
data object ButtonCancel : PushNotificationAnalyticEvents(
|
||||
event = "Button - Cancel",
|
||||
)
|
||||
|
||||
data class PermissionStatus(
|
||||
val isAllowed: Boolean,
|
||||
) : PushNotificationAnalyticEvents(
|
||||
|
|
|
|||
|
|
@ -26,10 +26,9 @@ internal class PushNotificationsFragment : ComposeFragment() {
|
|||
NavigationBar3ButtonsScrim()
|
||||
PushNotificationsScreen(
|
||||
onRequest = viewModel::onRequest,
|
||||
onRequestLater = viewModel::onRequestLater,
|
||||
onNeverRequest = viewModel::onNeverRequest,
|
||||
onAllowPermission = viewModel::onAllowPermission,
|
||||
onDenyPermission = viewModel::onDenyPermission,
|
||||
onOpenSettings = viewModel::openSettings,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,18 +17,15 @@ import kotlinx.collections.immutable.persistentListOf
|
|||
@Composable
|
||||
internal fun PushNotificationsScreen(
|
||||
onRequest: () -> Unit,
|
||||
onRequestLater: () -> Unit,
|
||||
onNeverRequest: () -> Unit,
|
||||
onAllowPermission: () -> Unit,
|
||||
onDenyPermission: () -> Unit,
|
||||
onOpenSettings: () -> Unit,
|
||||
) {
|
||||
val isClicked = remember { mutableStateOf(false) }
|
||||
val requestPushPermission = requestPushPermission(
|
||||
isFirstTimeAsking = true,
|
||||
isClicked = isClicked,
|
||||
onAllow = onAllowPermission,
|
||||
onDeny = onDenyPermission,
|
||||
onOpenSettings = onOpenSettings,
|
||||
pushPermission = getPushPermissionOrNull(),
|
||||
)
|
||||
|
||||
|
|
@ -54,8 +51,8 @@ internal fun PushNotificationsScreen(
|
|||
},
|
||||
),
|
||||
secondaryButton = ShowcaseButtonModel(
|
||||
buttonText = resourceReference(R.string.common_later),
|
||||
onClick = onRequestLater,
|
||||
buttonText = resourceReference(R.string.common_cancel),
|
||||
onClick = onNeverRequest,
|
||||
),
|
||||
modifier = Modifier.systemBarsPadding(),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,11 +4,7 @@ import androidx.lifecycle.ViewModel
|
|||
import androidx.lifecycle.viewModelScope
|
||||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.core.analytics.models.AnalyticsParam
|
||||
import com.tangem.core.navigation.settings.SettingsManager
|
||||
import com.tangem.domain.settings.DelayPermissionRequestUseCase
|
||||
import com.tangem.domain.settings.NeverRequestPermissionUseCase
|
||||
import com.tangem.domain.settings.NeverToInitiallyAskPermissionUseCase
|
||||
import com.tangem.domain.settings.SetFirstTimeAskingPermissionUseCase
|
||||
import com.tangem.features.pushnotifications.api.analytics.PushNotificationAnalyticEvents
|
||||
import com.tangem.features.pushnotifications.api.utils.PUSH_PERMISSION
|
||||
import com.tangem.features.pushnotifications.impl.navigation.DefaultPushNotificationsRouter
|
||||
|
|
@ -19,12 +15,8 @@ import javax.inject.Inject
|
|||
@Suppress("LongParameterList")
|
||||
@HiltViewModel
|
||||
internal class PushNotificationViewModel @Inject constructor(
|
||||
private val setFirstTimeAskingPermissionUseCase: SetFirstTimeAskingPermissionUseCase,
|
||||
private val delayPermissionRequestUseCase: DelayPermissionRequestUseCase,
|
||||
private val neverRequestPermissionUseCase: NeverRequestPermissionUseCase,
|
||||
private val neverToInitiallyAskPermissionUseCase: NeverToInitiallyAskPermissionUseCase,
|
||||
private val router: DefaultPushNotificationsRouter,
|
||||
private val settingsManager: SettingsManager,
|
||||
private val analyticHandler: AnalyticsEventHandler,
|
||||
) : ViewModel(), PushNotificationsClickIntents {
|
||||
|
||||
|
|
@ -32,19 +24,14 @@ internal class PushNotificationViewModel @Inject constructor(
|
|||
analyticHandler.send(
|
||||
PushNotificationAnalyticEvents.ButtonAllow(AnalyticsParam.ScreensSources.Stories),
|
||||
)
|
||||
viewModelScope.launch {
|
||||
setFirstTimeAskingPermissionUseCase(PUSH_PERMISSION)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRequestLater() {
|
||||
override fun onNeverRequest() {
|
||||
analyticHandler.send(
|
||||
PushNotificationAnalyticEvents.ButtonLater(AnalyticsParam.ScreensSources.Stories),
|
||||
PushNotificationAnalyticEvents.ButtonCancel(AnalyticsParam.ScreensSources.Stories),
|
||||
)
|
||||
viewModelScope.launch {
|
||||
delayPermissionRequestUseCase(PUSH_PERMISSION)
|
||||
setFirstTimeAskingPermissionUseCase(PUSH_PERMISSION)
|
||||
neverToInitiallyAskPermissionUseCase(PUSH_PERMISSION)
|
||||
neverRequestPermissionUseCase(PUSH_PERMISSION)
|
||||
router.openHome()
|
||||
}
|
||||
}
|
||||
|
|
@ -55,7 +42,6 @@ internal class PushNotificationViewModel @Inject constructor(
|
|||
)
|
||||
viewModelScope.launch {
|
||||
neverRequestPermissionUseCase(PUSH_PERMISSION)
|
||||
neverToInitiallyAskPermissionUseCase(PUSH_PERMISSION)
|
||||
router.openHome()
|
||||
}
|
||||
}
|
||||
|
|
@ -65,11 +51,8 @@ internal class PushNotificationViewModel @Inject constructor(
|
|||
PushNotificationAnalyticEvents.PermissionStatus(isAllowed = false),
|
||||
)
|
||||
viewModelScope.launch {
|
||||
delayPermissionRequestUseCase(PUSH_PERMISSION)
|
||||
neverToInitiallyAskPermissionUseCase(PUSH_PERMISSION)
|
||||
neverRequestPermissionUseCase(PUSH_PERMISSION)
|
||||
router.openHome()
|
||||
}
|
||||
}
|
||||
|
||||
override fun openSettings() = settingsManager.openSettings()
|
||||
}
|
||||
|
|
@ -3,11 +3,9 @@ package com.tangem.features.pushnotifications.impl.presentation.viewmodel
|
|||
internal interface PushNotificationsClickIntents {
|
||||
fun onRequest()
|
||||
|
||||
fun onRequestLater()
|
||||
fun onNeverRequest()
|
||||
|
||||
fun onAllowPermission()
|
||||
|
||||
fun onDenyPermission()
|
||||
|
||||
fun openSettings()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue