Updated on 2026-08-14
This commit is contained in:
parent
03f702640e
commit
abf6fc7d69
11 changed files with 129 additions and 11 deletions
|
|
@ -20,6 +20,7 @@ import com.tangem.common.ui.userwallet.ext.walletInterationIcon
|
|||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.core.analytics.models.AnalyticsParam
|
||||
import com.tangem.core.analytics.models.event.OfframpAnalyticsEvent
|
||||
import com.tangem.core.analytics.models.event.TransferAnalyticsEvent
|
||||
import com.tangem.core.decompose.di.GlobalUiMessageSender
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
import com.tangem.core.decompose.model.Model
|
||||
|
|
@ -368,6 +369,7 @@ internal class TokenDetailsModel @Inject constructor(
|
|||
actions = state.states,
|
||||
networkSource = networkSource,
|
||||
clickIntents = this@TokenDetailsModel,
|
||||
analyticsEventHandler = analyticsEventsHandler,
|
||||
onActionDispatched = bottomSheetNavigation::dismiss,
|
||||
),
|
||||
)
|
||||
|
|
@ -547,6 +549,13 @@ internal class TokenDetailsModel @Inject constructor(
|
|||
}
|
||||
|
||||
override fun onAddFundsClick() {
|
||||
analyticsEventsHandler.send(
|
||||
TokenScreenAnalyticsEvent.ButtonWithParams.ButtonAddFunds(
|
||||
token = cryptoCurrency.symbol,
|
||||
blockchain = cryptoCurrency.network.name,
|
||||
derivationIndex = getAccountIndexOrNull(),
|
||||
),
|
||||
)
|
||||
bottomSheetNavigation.activate(
|
||||
TokenDetailsBottomSheetConfig.AddFunds(
|
||||
userWalletId = userWalletId,
|
||||
|
|
@ -556,6 +565,13 @@ internal class TokenDetailsModel @Inject constructor(
|
|||
}
|
||||
|
||||
override fun onTransferClick() {
|
||||
analyticsEventsHandler.send(
|
||||
TokenScreenAnalyticsEvent.ButtonWithParams.ButtonTransfer(
|
||||
token = cryptoCurrency.symbol,
|
||||
blockchain = cryptoCurrency.network.name,
|
||||
derivationIndex = getAccountIndexOrNull(),
|
||||
),
|
||||
)
|
||||
val amount = cryptoCurrencyStatus?.value?.amount
|
||||
if (amount == null || amount.signum() <= 0) {
|
||||
handleUnavailabilityReason(
|
||||
|
|
@ -565,6 +581,9 @@ internal class TokenDetailsModel @Inject constructor(
|
|||
)
|
||||
return
|
||||
}
|
||||
analyticsEventsHandler.send(
|
||||
TransferAnalyticsEvent.MethodScreenOpened(source = AnalyticsParam.ScreensSources.Token),
|
||||
)
|
||||
bottomSheetNavigation.activate(TokenDetailsBottomSheetConfig.Transfer)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.tangem.feature.tokendetails.presentation.tokendetails.state.transformer
|
||||
|
||||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.core.analytics.models.event.TransferAnalyticsEvent
|
||||
import com.tangem.domain.models.StatusSource
|
||||
import com.tangem.domain.tokens.model.ScenarioUnavailabilityReason
|
||||
import com.tangem.domain.tokens.model.TokenActionsState
|
||||
|
|
@ -13,6 +15,7 @@ internal class UpdateTransferTransformer(
|
|||
private val actions: List<TokenActionsState.ActionState>,
|
||||
private val networkSource: StatusSource,
|
||||
private val clickIntents: TokenDetailsClickIntents,
|
||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
private val onActionDispatched: () -> Unit,
|
||||
) : Transformer<TokenDetailsUM> {
|
||||
|
||||
|
|
@ -28,6 +31,7 @@ internal class UpdateTransferTransformer(
|
|||
isLoading = action.unavailabilityReason.isOutdatedLoading(),
|
||||
isEnabled = action.unavailabilityReason == ScenarioUnavailabilityReason.None,
|
||||
onClick = {
|
||||
analyticsEventHandler.send(TransferAnalyticsEvent.ButtonSend())
|
||||
onActionDispatched()
|
||||
clickIntents.onSendClick(action.unavailabilityReason)
|
||||
},
|
||||
|
|
@ -38,6 +42,7 @@ internal class UpdateTransferTransformer(
|
|||
isLoading = action.unavailabilityReason.isLoading,
|
||||
isEnabled = action.unavailabilityReason == ScenarioUnavailabilityReason.None,
|
||||
onClick = {
|
||||
analyticsEventHandler.send(TransferAnalyticsEvent.ButtonSwap())
|
||||
onActionDispatched()
|
||||
clickIntents.onSwapFromClick(action.unavailabilityReason)
|
||||
},
|
||||
|
|
@ -53,6 +58,7 @@ internal class UpdateTransferTransformer(
|
|||
isLoading = false,
|
||||
isEnabled = true,
|
||||
onClick = {
|
||||
analyticsEventHandler.send(TransferAnalyticsEvent.ButtonSwapAndSend())
|
||||
onActionDispatched()
|
||||
clickIntents.onSwapAndSendClick(it.unavailabilityReason)
|
||||
},
|
||||
|
|
@ -63,6 +69,7 @@ internal class UpdateTransferTransformer(
|
|||
isLoading = action.unavailabilityReason.isOutdatedLoading(),
|
||||
isEnabled = action.unavailabilityReason == ScenarioUnavailabilityReason.None,
|
||||
onClick = {
|
||||
analyticsEventHandler.send(TransferAnalyticsEvent.ButtonSell())
|
||||
onActionDispatched()
|
||||
clickIntents.onSellClick(action.unavailabilityReason)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package com.tangem.feature.tokendetails.presentation.tokendetails.state.transformer
|
||||
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.core.analytics.models.event.TransferAnalyticsEvent
|
||||
import com.tangem.core.ui.components.containers.pullToRefresh.PullToRefreshConfig
|
||||
import com.tangem.core.ui.components.marketprice.MarketPriceBlockState
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
|
|
@ -24,6 +26,7 @@ import org.junit.jupiter.api.Test
|
|||
class UpdateTransferTransformerTest {
|
||||
|
||||
private val clickIntents: TokenDetailsClickIntents = mockk(relaxed = true)
|
||||
private val analyticsEventHandler: AnalyticsEventHandler = mockk(relaxed = true)
|
||||
private val onActionDispatched: () -> Unit = mockk(relaxed = true)
|
||||
|
||||
@Test
|
||||
|
|
@ -112,6 +115,7 @@ class UpdateTransferTransformerTest {
|
|||
|
||||
// THEN
|
||||
verifyOrder {
|
||||
analyticsEventHandler.send(ofType<TransferAnalyticsEvent.ButtonSend>())
|
||||
onActionDispatched.invoke()
|
||||
clickIntents.onSendClick(ScenarioUnavailabilityReason.None)
|
||||
}
|
||||
|
|
@ -130,6 +134,7 @@ class UpdateTransferTransformerTest {
|
|||
|
||||
// THEN
|
||||
verifyOrder {
|
||||
analyticsEventHandler.send(ofType<TransferAnalyticsEvent.ButtonSell>())
|
||||
onActionDispatched.invoke()
|
||||
clickIntents.onSellClick(ScenarioUnavailabilityReason.None)
|
||||
}
|
||||
|
|
@ -225,6 +230,7 @@ class UpdateTransferTransformerTest {
|
|||
|
||||
// THEN
|
||||
verifyOrder {
|
||||
analyticsEventHandler.send(ofType<TransferAnalyticsEvent.ButtonSwap>())
|
||||
onActionDispatched.invoke()
|
||||
clickIntents.onSwapFromClick(ScenarioUnavailabilityReason.None)
|
||||
}
|
||||
|
|
@ -347,6 +353,7 @@ class UpdateTransferTransformerTest {
|
|||
|
||||
// Assert
|
||||
verifyOrder {
|
||||
analyticsEventHandler.send(ofType<TransferAnalyticsEvent.ButtonSwapAndSend>())
|
||||
onActionDispatched.invoke()
|
||||
clickIntents.onSwapAndSendClick(ScenarioUnavailabilityReason.None)
|
||||
}
|
||||
|
|
@ -405,6 +412,7 @@ class UpdateTransferTransformerTest {
|
|||
// THEN
|
||||
verify(exactly = 0) { onActionDispatched.invoke() }
|
||||
verify(exactly = 0) { clickIntents.onSendClick(any()) }
|
||||
verify(exactly = 0) { analyticsEventHandler.send(any()) }
|
||||
}
|
||||
|
||||
private fun createTransformer(
|
||||
|
|
@ -414,6 +422,7 @@ class UpdateTransferTransformerTest {
|
|||
actions = actions,
|
||||
networkSource = networkSource,
|
||||
clickIntents = clickIntents,
|
||||
analyticsEventHandler = analyticsEventHandler,
|
||||
onActionDispatched = onActionDispatched,
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue