diff --git a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenOnrampAnalyticsEvent.kt b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenOnrampAnalyticsEvent.kt index ef07a4082d..ffa78172b9 100644 --- a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenOnrampAnalyticsEvent.kt +++ b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenOnrampAnalyticsEvent.kt @@ -5,12 +5,12 @@ import com.tangem.core.analytics.models.AnalyticsParam.Key.PROVIDER import com.tangem.core.analytics.models.AnalyticsParam.Key.STATUS import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM -class TokenOnrampAnalyticsEvent( +sealed class TokenOnrampAnalyticsEvent( event: String, params: Map = mapOf(), ) : AnalyticsEvent("Onramp", event, params) { - class OnrampStatusOpened(tokenSymbol: String, provider: String, fiatCurrency: String) : TokenScreenAnalyticsEvent( + class OnrampStatusOpened(tokenSymbol: String, provider: String, fiatCurrency: String) : TokenOnrampAnalyticsEvent( event = "Onramp Status Opened", params = mapOf( TOKEN_PARAM to tokenSymbol, @@ -20,7 +20,7 @@ class TokenOnrampAnalyticsEvent( ) class OnrampStatusChanged(tokenSymbol: String, status: String, provider: String, fiatCurrency: String) : - TokenScreenAnalyticsEvent( + TokenOnrampAnalyticsEvent( event = "Onramp Status", params = mapOf( TOKEN_PARAM to tokenSymbol, @@ -30,12 +30,12 @@ class TokenOnrampAnalyticsEvent( ), ) - data object GoToProvider : TokenScreenAnalyticsEvent(event = "Button - Go To Provider") + data object GoToProvider : TokenOnrampAnalyticsEvent(event = "Button - Go To Provider") data class NoticeKYC( val tokenSymbol: String, val provider: String, - ) : TokenScreenAnalyticsEvent( + ) : TokenOnrampAnalyticsEvent( event = "Notice - KYC", params = mapOf( TOKEN_PARAM to tokenSymbol, diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt index 5ea7c807a7..12371bbef8 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt @@ -297,17 +297,6 @@ internal class OnrampMainComponentModel @Inject constructor( lastUpdateState.value = null return } - - if (checkLastInputState(quote)) { - lastUpdateState.value = OnrampLastUpdate( - quote.fromAmount, - quote.countryCode, - ) - - _state.update { - amountStateFactory.getUpdatedProviderState(selectedQuote = quote, quotes = quotes) - } - } _state.update { amountStateFactory.getAmountSecondaryUpdatedState(quote = quote) } } @@ -322,7 +311,7 @@ internal class OnrampMainComponentModel @Inject constructor( val quoteToCheck = quotes.firstOrNull { it !is OnrampQuote.Error } // Check if amount, country or currency has changed - return if (checkLastInputState(quoteToCheck)) { + val newQuote = if (checkLastInputState(quoteToCheck)) { quoteToCheck } else { val state = state.value as? OnrampMainComponentUM.Content @@ -341,6 +330,20 @@ internal class OnrampMainComponentModel @Inject constructor( lastSelectedQuote } } + newQuote?.let { updateProvider(newQuote, quotes) } + + return newQuote + } + + private fun updateProvider(quote: OnrampQuote, quotes: List) { + lastUpdateState.value = OnrampLastUpdate( + quote.fromAmount, + quote.countryCode, + ) + + _state.update { + amountStateFactory.getUpdatedProviderState(selectedQuote = quote, quotes = quotes) + } } private fun onRetryQuotes() { diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/entity/conterter/SetOnrampSuccessContentConverter.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/entity/conterter/SetOnrampSuccessContentConverter.kt index b5d275dac8..ab7e4b6f85 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/entity/conterter/SetOnrampSuccessContentConverter.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/entity/conterter/SetOnrampSuccessContentConverter.kt @@ -213,7 +213,7 @@ internal class SetOnrampSuccessContentConverter( else -> if (externalTxId != null) { ExpressLinkUM.Content( icon = R.drawable.ic_copy_24, - text = resourceReference(R.string.express_transaction_id, wrappedList(externalTxId)), + text = stringReference(externalTxId), onClick = { onCopyClick(externalTxId) }, ) } else { diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt index 80caf88f09..436bcd0791 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt @@ -20,6 +20,7 @@ import com.tangem.domain.onramp.model.cache.OnrampTransaction import com.tangem.domain.onramp.model.error.OnrampError import com.tangem.domain.tokens.GetCryptoCurrencyUseCase import com.tangem.domain.tokens.model.CryptoCurrency +import com.tangem.domain.tokens.model.analytics.TokenOnrampAnalyticsEvent import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.features.onramp.component.OnrampSuccessComponent import com.tangem.features.onramp.impl.R @@ -64,6 +65,7 @@ internal class OnrampSuccessComponentModel @Inject constructor( } override fun goToProviderClick(providerLink: String) { + analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider) urlOpener.openUrl(providerLink) } diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsOnrampTransactionStateConverter.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsOnrampTransactionStateConverter.kt index 06644ff6e6..44970bac5f 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsOnrampTransactionStateConverter.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsOnrampTransactionStateConverter.kt @@ -116,7 +116,10 @@ internal class TokenDetailsOnrampTransactionStateConverter( } private fun onProviderClick(externalTxUrl: String?) = if (externalTxUrl != null) { - { clickIntents.onGoToProviderClick(externalTxUrl) } + { + analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider) + clickIntents.onGoToProviderClick(externalTxUrl) + } } else { null } @@ -270,6 +273,7 @@ internal class TokenDetailsOnrampTransactionStateConverter( icon = R.drawable.ic_arrow_top_right_24, text = resourceReference(R.string.common_go_to_provider), onClick = { + analyticsEventHandler.send(TokenOnrampAnalyticsEvent.GoToProvider) clickIntents.onGoToProviderClick(externalTxUrl) }, )