Updated on 2026-08-14
This commit is contained in:
parent
e6ec52e35a
commit
6aec7efdd6
9 changed files with 14 additions and 35 deletions
|
|
@ -20,12 +20,8 @@ interface TokenDetailsClickIntents {
|
|||
|
||||
fun onSwapClick(unavailabilityReason: ScenarioUnavailabilityReason)
|
||||
|
||||
fun onSwapFromClick(unavailabilityReason: ScenarioUnavailabilityReason)
|
||||
|
||||
fun onSwapAndSendClick(unavailabilityReason: ScenarioUnavailabilityReason)
|
||||
|
||||
fun onSwapToClick(unavailabilityReason: ScenarioUnavailabilityReason)
|
||||
|
||||
fun onBuyClick(unavailabilityReason: ScenarioUnavailabilityReason)
|
||||
|
||||
fun onAddFundsClick()
|
||||
|
|
@ -145,12 +141,8 @@ internal class EmptyTokenDetailsClickIntents : TokenDetailsClickIntents {
|
|||
|
||||
override fun onSwapClick(unavailabilityReason: ScenarioUnavailabilityReason) { /* no op */ }
|
||||
|
||||
override fun onSwapFromClick(unavailabilityReason: ScenarioUnavailabilityReason) { /* no op */ }
|
||||
|
||||
override fun onSwapAndSendClick(unavailabilityReason: ScenarioUnavailabilityReason) { /* no op */ }
|
||||
|
||||
override fun onSwapToClick(unavailabilityReason: ScenarioUnavailabilityReason) { /* no op */ }
|
||||
|
||||
override fun onHideClick() { /* no op */ }
|
||||
|
||||
override fun onHideConfirmed() { /* no op */ }
|
||||
|
|
|
|||
|
|
@ -16,10 +16,6 @@ import com.tangem.common.routing.deeplink.MarketingDeeplink
|
|||
import com.tangem.common.routing.deeplink.resolveMarketingDeeplink
|
||||
import com.tangem.common.ui.bottomsheet.receive.AddressModel
|
||||
import com.tangem.common.ui.bottomsheet.receive.mapToAddressModels
|
||||
import com.tangem.features.marketing.api.MarketingBannerRequest
|
||||
import com.tangem.features.rating.RatingComponent
|
||||
import com.tangem.feature.swap.domain.SwapFeedbackUseCase
|
||||
import com.tangem.feature.swap.domain.models.domain.SwapFeedbackParams
|
||||
import com.tangem.common.ui.tokens.getUnavailabilityReasonText
|
||||
import com.tangem.common.ui.userwallet.converter.WalletIconUMConverter
|
||||
import com.tangem.common.ui.userwallet.ext.walletInterationIcon
|
||||
|
|
@ -59,8 +55,8 @@ import com.tangem.domain.dynamicaddresses.IsDynamicAddressesAvailableUseCase
|
|||
import com.tangem.domain.dynamicaddresses.IsXpubSupportedUseCase
|
||||
import com.tangem.domain.dynamicaddresses.repository.DynamicAddressesRepository
|
||||
import com.tangem.domain.feedback.SendBackupProblemEmailUseCase
|
||||
import com.tangem.domain.models.StatusSource
|
||||
import com.tangem.domain.marketing.models.MarketingScreen
|
||||
import com.tangem.domain.models.StatusSource
|
||||
import com.tangem.domain.models.TokenReceiveNotification
|
||||
import com.tangem.domain.models.account.Account
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
|
|
@ -96,6 +92,8 @@ import com.tangem.domain.txhistory.usecase.GetFixedTxHistoryItemsUseCase
|
|||
import com.tangem.domain.wallets.usecase.*
|
||||
import com.tangem.domain.yield.supply.models.YieldSupplyRewardBalance
|
||||
import com.tangem.domain.yield.supply.usecase.YieldSupplyGetRewardsBalanceUseCase
|
||||
import com.tangem.feature.swap.domain.SwapFeedbackUseCase
|
||||
import com.tangem.feature.swap.domain.models.domain.SwapFeedbackParams
|
||||
import com.tangem.feature.tokendetails.deeplink.TokenDetailsDeepLinkActionListener
|
||||
import com.tangem.feature.tokendetails.domain.GetCurrencyWarningsUseCase
|
||||
import com.tangem.feature.tokendetails.presentation.router.InnerTokenDetailsRouter
|
||||
|
|
@ -106,6 +104,8 @@ import com.tangem.feature.tokendetails.presentation.tokendetails.state.*
|
|||
import com.tangem.feature.tokendetails.presentation.tokendetails.state.factory.QuickTopUpBlockFactory
|
||||
import com.tangem.feature.tokendetails.presentation.tokendetails.state.factory.TokenDetailsStateFactory
|
||||
import com.tangem.feature.tokendetails.presentation.tokendetails.state.transformer.*
|
||||
import com.tangem.features.marketing.api.MarketingBannerRequest
|
||||
import com.tangem.features.rating.RatingComponent
|
||||
import com.tangem.features.tokendetails.ExpressTransactionsEvent
|
||||
import com.tangem.features.tokendetails.ExpressTransactionsEventListener
|
||||
import com.tangem.features.tokendetails.TokenDetailsComponent
|
||||
|
|
@ -826,7 +826,7 @@ internal class TokenDetailsModel @Inject constructor(
|
|||
}
|
||||
|
||||
override fun onSwapClick(unavailabilityReason: ScenarioUnavailabilityReason) {
|
||||
handleSwap(unavailabilityReason, AppRoute.Swap.CurrencyPosition.ANY, checkYieldSupply = true)
|
||||
handleSwap(unavailabilityReason, checkYieldSupply = true)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -852,10 +852,6 @@ internal class TokenDetailsModel @Inject constructor(
|
|||
MarketingDeeplink.EXTERNAL -> false
|
||||
}
|
||||
|
||||
override fun onSwapFromClick(unavailabilityReason: ScenarioUnavailabilityReason) {
|
||||
handleSwap(unavailabilityReason, AppRoute.Swap.CurrencyPosition.FROM, checkYieldSupply = true)
|
||||
}
|
||||
|
||||
override fun onSwapAndSendClick(unavailabilityReason: ScenarioUnavailabilityReason) {
|
||||
if (handleUnavailabilityReason(unavailabilityReason = unavailabilityReason)) {
|
||||
return
|
||||
|
|
@ -870,15 +866,7 @@ internal class TokenDetailsModel @Inject constructor(
|
|||
)
|
||||
}
|
||||
|
||||
override fun onSwapToClick(unavailabilityReason: ScenarioUnavailabilityReason) {
|
||||
handleSwap(unavailabilityReason, AppRoute.Swap.CurrencyPosition.TO, checkYieldSupply = false)
|
||||
}
|
||||
|
||||
private fun handleSwap(
|
||||
unavailabilityReason: ScenarioUnavailabilityReason,
|
||||
currencyPosition: AppRoute.Swap.CurrencyPosition,
|
||||
checkYieldSupply: Boolean,
|
||||
) {
|
||||
private fun handleSwap(unavailabilityReason: ScenarioUnavailabilityReason, checkYieldSupply: Boolean) {
|
||||
analyticsEventsHandler.send(
|
||||
TokenScreenAnalyticsEvent.ButtonWithParams.ButtonExchange(
|
||||
token = cryptoCurrency.symbol,
|
||||
|
|
@ -906,7 +894,6 @@ internal class TokenDetailsModel @Inject constructor(
|
|||
fromCryptoCurrency = cryptoCurrency,
|
||||
userWalletId = userWalletId,
|
||||
screenSource = AnalyticsParam.ScreensSources.Token.value,
|
||||
fromCurrencyPosition = currencyPosition,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ internal class UpdateActionButtonsTransformer(
|
|||
}
|
||||
},
|
||||
) ?: prev.swapButton.tangemIconUM,
|
||||
onClick = { clickIntents.onSwapFromClick(swapAction.unavailabilityReason) },
|
||||
onClick = { clickIntents.onSwapClick(swapAction.unavailabilityReason) },
|
||||
)
|
||||
|
||||
return prevState.copy(balanceBlockUM = prev.copyButtons(swapButton = updated))
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ internal class UpdateAddFundsTransformer(
|
|||
isEnabled = action.unavailabilityReason == ScenarioUnavailabilityReason.None,
|
||||
onClick = {
|
||||
onActionDispatched()
|
||||
clickIntents.onSwapToClick(action.unavailabilityReason)
|
||||
clickIntents.onSwapClick(action.unavailabilityReason)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ internal class UpdateTransferTransformer(
|
|||
onClick = {
|
||||
analyticsEventHandler.send(TransferAnalyticsEvent.ButtonSwap())
|
||||
onActionDispatched()
|
||||
clickIntents.onSwapFromClick(action.unavailabilityReason)
|
||||
clickIntents.onSwapClick(action.unavailabilityReason)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ internal class UpdateZeroBalanceActionsTransformer(
|
|||
return prevState.copy(
|
||||
zeroBalanceActionsUM = ZeroBalanceActionsUM.Content(
|
||||
buy = buyAction?.toRow(onClick = clickIntents::onBuyClick),
|
||||
swap = swapAction?.toRow(onClick = clickIntents::onSwapToClick),
|
||||
swap = swapAction?.toRow(onClick = clickIntents::onSwapClick),
|
||||
receive = receiveAction?.toRow(
|
||||
onClick = clickIntents::onReceiveClick,
|
||||
onLongClick = { clickIntents.onCopyAddress() },
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ class UpdateAddFundsTransformerTest {
|
|||
// THEN
|
||||
verifyOrder {
|
||||
onActionDispatched.invoke()
|
||||
clickIntents.onSwapToClick(ScenarioUnavailabilityReason.None)
|
||||
clickIntents.onSwapClick(ScenarioUnavailabilityReason.None)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ class UpdateTransferTransformerTest {
|
|||
verifyOrder {
|
||||
analyticsEventHandler.send(ofType<TransferAnalyticsEvent.ButtonSwap>())
|
||||
onActionDispatched.invoke()
|
||||
clickIntents.onSwapFromClick(ScenarioUnavailabilityReason.None)
|
||||
clickIntents.onSwapClick(ScenarioUnavailabilityReason.None)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ class UpdateZeroBalanceActionsTransformerTest {
|
|||
content.swap!!.onClick()
|
||||
|
||||
// THEN
|
||||
verify(exactly = 1) { clickIntents.onSwapToClick(ScenarioUnavailabilityReason.UsedOutdatedData) }
|
||||
verify(exactly = 1) { clickIntents.onSwapClick(ScenarioUnavailabilityReason.UsedOutdatedData) }
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue