Updated on 2026-08-14

This commit is contained in:
Tangem 2026-05-26 12:25:05 +02:00
parent a2d9c5118b
commit b1757c17d2
3 changed files with 30 additions and 1 deletions

View file

@ -4,6 +4,7 @@ import com.tangem.core.analytics.models.AnalyticsEvent
import com.tangem.core.analytics.models.AnalyticsParam.Key.SEARCHED
import com.tangem.core.analytics.models.AnalyticsParam.Key.SOURCE
import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM
import com.tangem.core.analytics.models.AnalyticsParam.Key.TYPE
import com.tangem.core.analytics.models.AnalyticsParam.ScreensSources
/**
@ -26,4 +27,9 @@ sealed class SwapAnalyticsEvent(
SEARCHED to if (isSearched) "True" else "False",
),
)
class FilterProvider(filterType: String) : SwapAnalyticsEvent(
event = "Filter Provider",
params = mapOf(TYPE to filterType),
)
}

View file

@ -1,10 +1,12 @@
package com.tangem.features.swap.v2.impl.chooseprovider.model
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.analytics.models.event.SwapAnalyticsEvent
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.express.models.ProviderFilterType
import com.tangem.domain.express.models.ExpressError
import com.tangem.domain.express.models.ProviderFilterType
import com.tangem.domain.express.models.ExpressProviderType
import com.tangem.domain.settings.usercountry.models.needApplyFCARestrictions
import com.tangem.features.swap.v2.api.SwapFeatureToggles
@ -26,6 +28,7 @@ internal class SwapChooseProviderModel @Inject constructor(
paramsContainer: ParamsContainer,
override val dispatchers: CoroutineDispatcherProvider,
private val swapFeatureToggles: SwapFeatureToggles,
private val analyticsEventHandler: AnalyticsEventHandler,
) : Model() {
private val params: SwapChooseProviderComponent.Params = paramsContainer.require()
@ -52,6 +55,15 @@ internal class SwapChooseProviderModel @Inject constructor(
}
fun onFilterSelect(filterType: ProviderFilterType) {
analyticsEventHandler.send(
SwapAnalyticsEvent.FilterProvider(
filterType = when (filterType) {
ProviderFilterType.ALL -> "All"
ProviderFilterType.CEX -> "CEX"
ProviderFilterType.DEX -> "DEX"
},
),
)
val filteredProviders = getDisplayableProviders(params.providers)
.filter { matchesTypeFilter(it, filterType) }
uiState.value = uiState.value.copy(

View file

@ -20,6 +20,7 @@ import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.analytics.models.AnalyticsParam
import com.tangem.core.analytics.models.AnalyticsParam.ScreensSources
import com.tangem.core.analytics.models.Basic
import com.tangem.core.analytics.models.event.SwapAnalyticsEvent
import com.tangem.core.decompose.di.ModelScoped
import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
@ -43,6 +44,7 @@ import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase
import com.tangem.domain.express.models.ExpressOperationType
import com.tangem.domain.express.models.ProviderFilterType
import com.tangem.domain.feedback.GetWalletMetaInfoUseCase
import com.tangem.domain.feedback.SaveBlockchainErrorUseCase
import com.tangem.domain.feedback.SendFeedbackEmailUseCase
@ -1723,6 +1725,15 @@ internal class SwapModel @Inject constructor(
}
},
onProviderFilterSelect = { filterType ->
analyticsEventHandler.send(
SwapAnalyticsEvent.FilterProvider(
filterType = when (filterType) {
ProviderFilterType.ALL -> "All"
ProviderFilterType.CEX -> "CEX"
ProviderFilterType.DEX -> "DEX"
},
),
)
uiState = stateBuilder.updateProviderFilterType(uiState, filterType)
},
openTokenDetailsScreen = { cryptoCurrency ->