Updated on 2026-08-14
This commit is contained in:
parent
60c861b9e7
commit
af04a09095
4 changed files with 30 additions and 1 deletions
|
|
@ -43,4 +43,22 @@ sealed class PushNotificationAnalyticEvents(
|
||||||
AnalyticsParam.STATE to if (isAllowed) "Allow" else "Cancel",
|
AnalyticsParam.STATE to if (isAllowed) "Allow" else "Cancel",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
data class NotificationOpened(
|
||||||
|
val type: String,
|
||||||
|
) : PushNotificationAnalyticEvents(
|
||||||
|
event = "Push Notification Opened",
|
||||||
|
params = mapOf(
|
||||||
|
AnalyticsParam.TYPE to type,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
data class NotificationsEnabled(
|
||||||
|
val isEnabled: Boolean,
|
||||||
|
) : PushNotificationAnalyticEvents(
|
||||||
|
event = "Push Toggle Clicked",
|
||||||
|
params = mapOf(
|
||||||
|
AnalyticsParam.STATE to if (isEnabled) "On" else "Off",
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -99,6 +99,7 @@ dependencies {
|
||||||
implementation(projects.features.staking.api)
|
implementation(projects.features.staking.api)
|
||||||
implementation(projects.features.markets.api)
|
implementation(projects.features.markets.api)
|
||||||
implementation(projects.features.onramp.api)
|
implementation(projects.features.onramp.api)
|
||||||
|
implementation(projects.features.pushNotifications.api)
|
||||||
implementation(projects.features.swap.api)
|
implementation(projects.features.swap.api)
|
||||||
implementation(projects.features.txhistory.api)
|
implementation(projects.features.txhistory.api)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package com.tangem.feature.tokendetails.deeplink
|
||||||
import arrow.core.getOrElse
|
import arrow.core.getOrElse
|
||||||
import com.tangem.common.routing.AppRoute
|
import com.tangem.common.routing.AppRoute
|
||||||
import com.tangem.common.routing.AppRouter
|
import com.tangem.common.routing.AppRouter
|
||||||
|
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||||
import com.tangem.core.deeplink.DeeplinkConst.NETWORK_ID_KEY
|
import com.tangem.core.deeplink.DeeplinkConst.NETWORK_ID_KEY
|
||||||
import com.tangem.core.deeplink.DeeplinkConst.TOKEN_ID_KEY
|
import com.tangem.core.deeplink.DeeplinkConst.TOKEN_ID_KEY
|
||||||
import com.tangem.core.deeplink.DeeplinkConst.TYPE_KEY
|
import com.tangem.core.deeplink.DeeplinkConst.TYPE_KEY
|
||||||
|
|
@ -12,6 +13,7 @@ import com.tangem.domain.tokens.FetchCurrencyStatusUseCase
|
||||||
import com.tangem.domain.tokens.GetCryptoCurrenciesUseCase
|
import com.tangem.domain.tokens.GetCryptoCurrenciesUseCase
|
||||||
import com.tangem.domain.wallets.models.UserWalletId
|
import com.tangem.domain.wallets.models.UserWalletId
|
||||||
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
|
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
|
||||||
|
import com.tangem.features.pushnotifications.api.analytics.PushNotificationAnalyticEvents
|
||||||
import com.tangem.features.tokendetails.deeplink.TokenDetailsDeepLinkHandler
|
import com.tangem.features.tokendetails.deeplink.TokenDetailsDeepLinkHandler
|
||||||
import dagger.assisted.Assisted
|
import dagger.assisted.Assisted
|
||||||
import dagger.assisted.AssistedFactory
|
import dagger.assisted.AssistedFactory
|
||||||
|
|
@ -29,6 +31,7 @@ internal class DefaultTokenDetailsDeepLinkHandler @AssistedInject constructor(
|
||||||
private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase,
|
private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase,
|
||||||
private val getCryptoCurrenciesUseCase: GetCryptoCurrenciesUseCase,
|
private val getCryptoCurrenciesUseCase: GetCryptoCurrenciesUseCase,
|
||||||
private val fetchCurrencyStatusUseCase: FetchCurrencyStatusUseCase,
|
private val fetchCurrencyStatusUseCase: FetchCurrencyStatusUseCase,
|
||||||
|
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||||
) : TokenDetailsDeepLinkHandler {
|
) : TokenDetailsDeepLinkHandler {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
@ -70,6 +73,8 @@ internal class DefaultTokenDetailsDeepLinkHandler @AssistedInject constructor(
|
||||||
return@launch
|
return@launch
|
||||||
}
|
}
|
||||||
|
|
||||||
|
analyticsEventHandler.send(PushNotificationAnalyticEvents.NotificationOpened(type.name))
|
||||||
|
|
||||||
appRouter.push(
|
appRouter.push(
|
||||||
AppRoute.CurrencyDetails(
|
AppRoute.CurrencyDetails(
|
||||||
userWalletId = userWalletId,
|
userWalletId = userWalletId,
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ import com.tangem.feature.walletsettings.entity.WalletSettingsUM
|
||||||
import com.tangem.feature.walletsettings.impl.R
|
import com.tangem.feature.walletsettings.impl.R
|
||||||
import com.tangem.feature.walletsettings.utils.ItemsBuilder
|
import com.tangem.feature.walletsettings.utils.ItemsBuilder
|
||||||
import com.tangem.features.nft.NFTFeatureToggles
|
import com.tangem.features.nft.NFTFeatureToggles
|
||||||
|
import com.tangem.features.pushnotifications.api.analytics.PushNotificationAnalyticEvents
|
||||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||||
import kotlinx.collections.immutable.PersistentList
|
import kotlinx.collections.immutable.PersistentList
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
|
@ -226,6 +227,7 @@ internal class WalletSettingsModel @Inject constructor(
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setNotificationsEnabledUseCase(params.userWalletId, false)
|
setNotificationsEnabledUseCase(params.userWalletId, false)
|
||||||
|
analyticsEventHandler.send(PushNotificationAnalyticEvents.NotificationsEnabled(false))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -239,6 +241,7 @@ internal class WalletSettingsModel @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onPushNotificationPermissionGranted(isGranted: Boolean) {
|
private fun onPushNotificationPermissionGranted(isGranted: Boolean) {
|
||||||
|
analyticsEventHandler.send(PushNotificationAnalyticEvents.PermissionStatus(isGranted))
|
||||||
state.update { value ->
|
state.update { value ->
|
||||||
value.copy(
|
value.copy(
|
||||||
requestPushNotificationsPermission = false,
|
requestPushNotificationsPermission = false,
|
||||||
|
|
@ -246,7 +249,9 @@ internal class WalletSettingsModel @Inject constructor(
|
||||||
}
|
}
|
||||||
if (isGranted) {
|
if (isGranted) {
|
||||||
modelScope.launch {
|
modelScope.launch {
|
||||||
setNotificationsEnabledUseCase(params.userWalletId, true)
|
setNotificationsEnabledUseCase(params.userWalletId, true).onRight {
|
||||||
|
analyticsEventHandler.send(PushNotificationAnalyticEvents.NotificationsEnabled(true))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
val message = DialogMessage(
|
val message = DialogMessage(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue