Updated on 2026-08-14

This commit is contained in:
Tangem 2026-05-06 12:44:09 +04:00
parent 84f35ac892
commit e7edce0cd8
5 changed files with 205 additions and 0 deletions

View file

@ -0,0 +1,14 @@
package com.tangem.feature.wallet.child.managetokens.analytics
import com.tangem.core.analytics.models.AnalyticsEvent
internal sealed class PortfolioAnalyticsEvent(
event: String,
) : AnalyticsEvent(category = "Portfolio", event = event) {
class ButtonAddManage : PortfolioAnalyticsEvent(event = "Button - Add Manage")
class ButtonAddTokens : PortfolioAnalyticsEvent(event = "Button - Add tokens")
class ButtonOrganizeTokens : PortfolioAnalyticsEvent(event = "Button - Organize Tokens")
}

View file

@ -3,11 +3,13 @@ package com.tangem.feature.wallet.child.managetokens.model
import com.arkivanov.decompose.router.slot.SlotNavigation
import com.arkivanov.decompose.router.slot.activate
import com.arkivanov.decompose.router.slot.dismiss
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.decompose.di.ModelScoped
import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.domain.models.account.AccountId
import com.tangem.feature.wallet.child.managetokens.AddAndManageBottomSheetComponent
import com.tangem.feature.wallet.child.managetokens.analytics.PortfolioAnalyticsEvent
import com.tangem.features.commonfeatures.api.portfolioselector.PortfolioFetcher
import com.tangem.features.commonfeatures.api.portfolioselector.PortfolioSelectorComponent
import com.tangem.features.commonfeatures.api.portfolioselector.PortfolioSelectorController
@ -21,6 +23,7 @@ internal class AddAndManageModel @Inject constructor(
paramsContainer: ParamsContainer,
override val dispatchers: CoroutineDispatcherProvider,
private val portfolioFetcherFactory: PortfolioFetcher.Factory,
private val analyticsEventHandler: AnalyticsEventHandler,
val portfolioSelectorController: PortfolioSelectorController,
) : Model() {
@ -45,6 +48,7 @@ internal class AddAndManageModel @Inject constructor(
}
fun onAddTokensClick() {
analyticsEventHandler.send(PortfolioAnalyticsEvent.ButtonAddTokens())
modelScope.launch {
val data = portfolioFetcher.data.first()
val isSingleAccount = data.isSingleChoice(params.userWalletId)
@ -65,6 +69,7 @@ internal class AddAndManageModel @Inject constructor(
}
fun onOrganizeTokensClick() {
analyticsEventHandler.send(PortfolioAnalyticsEvent.ButtonOrganizeTokens())
params.onDismiss()
params.onOrganizeTokensClick()
}

View file

@ -23,6 +23,7 @@ import com.tangem.domain.tokens.GetCryptoCurrencyActionsUseCase
import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase
import com.tangem.domain.wallets.usecase.GetUserWalletUseCase
import com.tangem.domain.yield.supply.usecase.YieldSupplySetShouldShowMainPromoUseCase
import com.tangem.feature.wallet.child.managetokens.analytics.PortfolioAnalyticsEvent
import com.tangem.feature.wallet.presentation.account.AccountDependencies
import com.tangem.feature.wallet.presentation.wallet.analytics.utils.TokenListAnalyticsSender
import com.tangem.feature.wallet.presentation.wallet.domain.OnrampStatusFactory
@ -123,6 +124,7 @@ internal class WalletContentClickIntentsImplementor @Inject constructor(
override fun onOrganizeTokensClick() {
val userWalletId = stateHolder.getSelectedWalletId()
if (walletFeatureToggles.isAddAndManageTokensEnabled) {
analyticsEventHandler.send(PortfolioAnalyticsEvent.ButtonAddManage())
router.openAddAndManageBottomSheet(userWalletId = userWalletId)
} else {
router.openOrganizeTokensScreen(userWalletId = userWalletId)