Updated on 2026-08-14

This commit is contained in:
Tangem 2024-10-30 23:55:53 +05:00
parent a48967b3ce
commit 4a59f88990
8 changed files with 5 additions and 48 deletions

View file

@ -43,8 +43,8 @@ fun Store<*>.dispatchNotification(resId: Int) {
dispatchOnMain(GlobalAction.ShowNotification(resId))
}
suspend fun Store<AppState>.onUserWalletSelected(userWallet: UserWallet, sendAnalyticsEvent: Boolean = false) {
state.globalState.tapWalletManager.onWalletSelected(userWallet, sendAnalyticsEvent)
suspend fun Store<AppState>.onUserWalletSelected(userWallet: UserWallet) {
state.globalState.tapWalletManager.onWalletSelected(userWallet)
}
fun Store<*>.dispatchErrorNotification(error: TapError) {

View file

@ -3,7 +3,6 @@ package com.tangem.tap.domain
import com.tangem.blockchain.common.Token
import com.tangem.blockchain.common.Wallet
import com.tangem.core.analytics.Analytics
import com.tangem.core.analytics.models.Basic
import com.tangem.domain.common.extensions.withMainContext
import com.tangem.domain.wallets.models.UserWallet
import com.tangem.operations.attestation.Attestation
@ -28,19 +27,16 @@ class TapWalletManager(
field = value
}
suspend fun onWalletSelected(userWallet: UserWallet, sendAnalyticsEvent: Boolean) {
suspend fun onWalletSelected(userWallet: UserWallet) {
// If a previous job was running, it gets cancelled before the new one starts,
// ensuring that only one job is active at any given time.
loadUserWalletDataJob = CoroutineScope(dispatchers.io)
.launch { loadUserWalletData(userWallet, sendAnalyticsEvent) }
.launch { loadUserWalletData(userWallet) }
.also { it.join() }
}
private suspend fun loadUserWalletData(userWallet: UserWallet, sendAnalyticsEvent: Boolean) {
private suspend fun loadUserWalletData(userWallet: UserWallet) {
Analytics.setContext(userWallet.scanResponse)
if (sendAnalyticsEvent) {
Analytics.send(Basic.WalletOpened())
}
val scanResponse = userWallet.scanResponse
val card = scanResponse.card
val attestationFailed = card.attestation.status == Attestation.Status.Failed

View file

@ -18,11 +18,6 @@ sealed class TokenScreenAnalyticsEvent(
params = mapOf("Token" to token),
)
class Refreshed(token: String) : TokenScreenAnalyticsEvent(
event = "Refreshed",
params = mapOf("Token" to token),
)
class ButtonRemoveToken(token: String) : TokenScreenAnalyticsEvent(
"Button - Remove Token",
params = mapOf("Token" to token),

View file

@ -720,8 +720,6 @@ internal class TokenDetailsViewModel @Inject constructor(
}
override fun onRefreshSwipe(isRefreshing: Boolean) {
analyticsEventsHandler.send(TokenScreenAnalyticsEvent.Refreshed(cryptoCurrency.symbol))
internalUiState.value = stateFactory.getRefreshingState()
viewModelScope.launch(dispatchers.main) {

View file

@ -1,17 +0,0 @@
package com.tangem.feature.wallet.presentation.wallet.analytics
import com.tangem.core.analytics.models.AnalyticsEvent
sealed class PortfolioEvent(
event: String,
params: Map<String, String> = mapOf(),
) : AnalyticsEvent("Portfolio", event, params) {
object Refreshed : PortfolioEvent("Refreshed")
object ButtonManageTokens : PortfolioEvent("Button - Manage Tokens")
object TokenTapped : PortfolioEvent("Token is Tapped")
object OrganizeTokens : PortfolioEvent("Button - Organize Tokens")
}

View file

@ -23,8 +23,6 @@ sealed class WalletScreenAnalyticsEvent {
override val oneTimeEventId: String = id + userWalletId.stringValue
}
data object WalletOpened : Basic(event = "Wallet Opened")
class CardWasScanned(source: AnalyticsParam.ScreensSources) : Basic(
event = "Card Was Scanned",
params = mapOf(
@ -74,7 +72,6 @@ sealed class WalletScreenAnalyticsEvent {
) : AnalyticsEvent(category = "Main Screen", event = event, params = params) {
data object ScreenOpened : MainScreen(event = "Screen opened")
data object WalletSwipe : MainScreen(event = "Wallet Swipe")
class EnableBiometrics(state: AnalyticsParam.OnOffState) : MainScreen(
event = "Enable Biometric",
@ -88,7 +85,6 @@ sealed class WalletScreenAnalyticsEvent {
data object NoticeBackupYourWalletTapped : MainScreen(event = "Notice - Backup Your Wallet Tapped")
data object NoticeScanYourCardTapped : MainScreen(event = "Notice - Scan Your Card Tapped")
data object NoticeWalletLocked : MainScreen(event = "Notice - Wallet Locked")
data object WalletUnlockTapped : MainScreen(event = "Notice - Wallet Unlock Tapped")
data object NetworksUnreachable : MainScreen(event = "Notice - Networks Unreachable")

View file

@ -1,6 +1,5 @@
package com.tangem.feature.wallet.presentation.wallet.viewmodels.intents
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
import com.tangem.domain.appcurrency.extenstions.unwrap
import com.tangem.domain.common.util.cardTypesResolver
@ -12,7 +11,6 @@ import com.tangem.domain.tokens.FetchTokenListUseCase.RefreshMode
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
import com.tangem.domain.wallets.usecase.SelectWalletUseCase
import com.tangem.feature.wallet.presentation.router.InnerWalletRouter
import com.tangem.feature.wallet.presentation.wallet.analytics.PortfolioEvent
import com.tangem.feature.wallet.presentation.wallet.domain.unwrap
import com.tangem.feature.wallet.presentation.wallet.loaders.WalletScreenContentLoader
import com.tangem.feature.wallet.presentation.wallet.state.WalletStateController
@ -43,7 +41,6 @@ internal class WalletClickIntents @Inject constructor(
private val fetchCurrencyStatusUseCase: FetchCurrencyStatusUseCase,
private val getSelectedAppCurrencyUseCase: GetSelectedAppCurrencyUseCase,
private val neverToShowWalletsScrollPreview: NeverToShowWalletsScrollPreview,
private val analyticsEventHandler: AnalyticsEventHandler,
private val dispatchers: CoroutineDispatcherProvider,
) : BaseWalletClickIntents(),
WalletCardClickIntents by walletCardClickIntentsImplementor,
@ -87,13 +84,11 @@ internal class WalletClickIntents @Inject constructor(
fun onRefreshSwipe(showRefreshState: Boolean) {
when (stateHolder.getSelectedWallet()) {
is WalletState.MultiCurrency.Content -> {
analyticsEventHandler.send(PortfolioEvent.Refreshed)
refreshMultiCurrencyContent(showRefreshState)
}
is WalletState.SingleCurrency.Content,
is WalletState.Visa.Content,
-> {
analyticsEventHandler.send(PortfolioEvent.Refreshed)
refreshSingleCurrencyContent(showRefreshState)
}
is WalletState.MultiCurrency.Locked,

View file

@ -1,7 +1,6 @@
package com.tangem.feature.wallet.presentation.wallet.viewmodels.intents
import arrow.core.getOrElse
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.domain.redux.ReduxStateHolder
import com.tangem.domain.settings.ShouldShowMarketsTooltipUseCase
import com.tangem.domain.tokens.GetCryptoCurrencyActionsUseCase
@ -12,7 +11,6 @@ import com.tangem.domain.tokens.model.TokenActionsState
import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase
import com.tangem.domain.wallets.models.UserWallet
import com.tangem.domain.wallets.usecase.GetUserWalletUseCase
import com.tangem.feature.wallet.presentation.wallet.analytics.PortfolioEvent
import com.tangem.feature.wallet.presentation.wallet.domain.unwrap
import com.tangem.feature.wallet.presentation.wallet.state.WalletStateController
import com.tangem.feature.wallet.presentation.wallet.state.model.ActionsBottomSheetConfig
@ -56,7 +54,6 @@ internal class WalletContentClickIntentsImplementor @Inject constructor(
private val getCryptoCurrencyActionsUseCase: GetCryptoCurrencyActionsUseCase,
private val getExplorerTransactionUrlUseCase: GetExplorerTransactionUrlUseCase,
private val shouldShowMarketsTooltipUseCase: ShouldShowMarketsTooltipUseCase,
private val analyticsEventHandler: AnalyticsEventHandler,
private val dispatchers: CoroutineDispatcherProvider,
private val reduxStateHolder: ReduxStateHolder,
) : BaseWalletClickIntents(), WalletContentClickIntents {
@ -92,13 +89,11 @@ internal class WalletContentClickIntentsImplementor @Inject constructor(
}
override fun onManageTokensClick() {
analyticsEventHandler.send(PortfolioEvent.ButtonManageTokens)
reduxStateHolder.dispatch(action = TokensAction.SetArgs.ManageAccess)
router.openManageTokensScreen(userWalletId = stateHolder.getSelectedWalletId())
}
override fun onOrganizeTokensClick() {
analyticsEventHandler.send(PortfolioEvent.OrganizeTokens)
router.openOrganizeTokensScreen(userWalletId = stateHolder.getSelectedWalletId())
}
@ -110,7 +105,6 @@ internal class WalletContentClickIntentsImplementor @Inject constructor(
}
override fun onTokenItemClick(currencyStatus: CryptoCurrencyStatus) {
analyticsEventHandler.send(PortfolioEvent.TokenTapped)
router.openTokenDetails(stateHolder.getSelectedWalletId(), currencyStatus)
}