diff --git a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt index f5901e8c69..30ea8ec4cd 100644 --- a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt +++ b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt @@ -13,7 +13,7 @@ internal class ExchangeStatusConverter : Converter { allowPermissionsHandler.addAddressToInProgress(permissionOptions.forTokenContractAddress) TxState.TxSent( - txAddress = userWalletManager.getLastTransactionHash(networkId, derivationPath).orEmpty(), + txHash = userWalletManager.getLastTransactionHash(networkId, derivationPath).orEmpty(), timestamp = System.currentTimeMillis(), ) } @@ -463,7 +462,7 @@ internal class SwapInteractorImpl @Inject constructor( currencyToGet.symbol, ), toAmountValue = swapData.toTokenAmount.value, - txAddress = userWalletManager.getLastTransactionHash(networkId, derivationPath).orEmpty(), + txHash = userWalletManager.getLastTransactionHash(networkId, derivationPath).orEmpty(), timestamp = System.currentTimeMillis(), ) } @@ -537,10 +536,6 @@ internal class SwapInteractorImpl @Inject constructor( }, ifRight = { val timestamp = System.currentTimeMillis() - val txUrl = blockchainInteractor.getExplorerTransactionLink( - networkId = currencyToSend.currency.network.backendId, - txAddress = exchangeData.transaction.txTo, - ) storeSwapTransaction( currencyToSend = currencyToSend, currencyToGet = currencyToGet, @@ -548,7 +543,7 @@ internal class SwapInteractorImpl @Inject constructor( swapProvider = swapProvider, swapDataModel = exchangeData, timestamp = timestamp, - txUrl = txUrl, + txExternalUrl = externalUrl.orEmpty(), ) storeLastCryptoCurrencyId(currencyToGet.currency) TxState.TxSent( @@ -562,12 +557,11 @@ internal class SwapInteractorImpl @Inject constructor( currencyToGet.currency.symbol, ), toAmountValue = exchangeData.toTokenAmount.value, - txAddress = userWalletManager.getLastTransactionHash( + txHash = userWalletManager.getLastTransactionHash( currencyToSend.currency.network.backendId, derivationPath, ).orEmpty(), txExternalUrl = externalUrl, - txUrl = txUrl, timestamp = timestamp, ) }, @@ -602,7 +596,7 @@ internal class SwapInteractorImpl @Inject constructor( swapProvider: SwapProvider, swapDataModel: SwapDataModel, timestamp: Long, - txUrl: String, + txExternalUrl: String, ) { swapTransactionRepository.storeTransaction( userWalletId = UserWalletId(userWalletManager.getWalletId()), @@ -618,7 +612,7 @@ internal class SwapInteractorImpl @Inject constructor( providerId = swapProvider.providerId, status = ExchangeStatus.New, txId = swapDataModel.transaction.txId, - txUrl = txUrl, + txExternalUrl = txExternalUrl, ), ), ) diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/di/SwapDomainModule.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/di/SwapDomainModule.kt index 518d7c9fc8..d299f7824e 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/di/SwapDomainModule.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/di/SwapDomainModule.kt @@ -42,7 +42,6 @@ class SwapDomainModule { walletManagersFacade: WalletManagersFacade, coroutineDispatcherProvider: CoroutineDispatcherProvider, initialToCurrencyResolver: InitialToCurrencyResolver, - blockchainInteractor: BlockchainInteractor, ): SwapInteractor { return SwapInteractorImpl( transactionManager = transactionManager, @@ -57,7 +56,6 @@ class SwapDomainModule { dispatcher = coroutineDispatcherProvider, swapTransactionRepository = swapTransactionRepository, initialToCurrencyResolver = initialToCurrencyResolver, - blockchainInteractor = blockchainInteractor, ) } diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt index fab1b174c2..b7c7418dae 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt @@ -732,6 +732,7 @@ internal class StateBuilder( dataState: SwapProcessDataState, onExploreClick: () -> Unit, onStatusClick: () -> Unit, + txUrl: String, ): SwapStateHolder { val fee = requireNotNull(dataState.selectedFee) val fromCryptoCurrency = requireNotNull(dataState.fromCryptoCurrency) @@ -746,7 +747,7 @@ internal class StateBuilder( return uiState.copy( successState = SwapSuccessStateHolder( timestamp = txState.timestamp, - txUrl = txState.txUrl.orEmpty(), + txUrl = txUrl, providerName = stringReference(providerState.name), providerType = stringReference(providerState.type), showStatusButton = providerState.type == ExchangeProviderType.CEX.name, diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt index ee03e66695..955d5e5f74 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt @@ -462,15 +462,19 @@ internal class SwapViewModel @Inject constructor( }.onSuccess { when (it) { is TxState.TxSent -> { + val url = blockchainInteractor.getExplorerTransactionLink( + networkId = fromCurrency.currency.network.backendId, + txHash = it.txHash, + ) updateWalletBalance() uiState = stateBuilder.createSuccessState( uiState = uiState, txState = it, dataState = dataState, + txUrl = url, onExploreClick = { - val txUrl = it.txUrl - if (!txUrl.isNullOrBlank()) { - swapRouter.openUrl(txUrl) + if (it.txHash.isNotEmpty()) { + swapRouter.openUrl(url) } analyticsEventHandler.send( event = SwapEvents.ButtonExplore(initialCryptoCurrency.symbol), diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsSwapTransactionsStateConverter.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsSwapTransactionsStateConverter.kt index fd13879bc9..514afc7709 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsSwapTransactionsStateConverter.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsSwapTransactionsStateConverter.kt @@ -66,7 +66,7 @@ internal class TokenDetailsSwapTransactionsStateConverter( SwapTransactionsState( txId = transaction.txId, provider = transaction.provider, - txUrl = transaction.status?.txUrl, + txUrl = transaction.status?.txExternalUrl, timestamp = TextReference.Str("${timestamp.toDateFormat()}, ${timestamp.toTimeFormat()}"), fiatSymbol = appCurrency.symbol, statuses = getStatuses(transaction.status?.status), @@ -74,7 +74,7 @@ internal class TokenDetailsSwapTransactionsStateConverter( activeStatus = transaction.status?.status, notification = getNotification( transaction.status?.status, - transaction.status?.txUrl, + transaction.status?.txExternalUrl, ), toCryptoCurrencyId = toCurrency.currency.id, toCryptoAmount = BigDecimalFormatter.formatCryptoAmount( @@ -112,9 +112,9 @@ internal class TokenDetailsSwapTransactionsStateConverter( return tx.copy( activeStatus = statusModel.status, hasFailed = hasFailed, - notification = getNotification(statusModel.status, statusModel.txUrl), + notification = getNotification(statusModel.status, statusModel.txExternalUrl), statuses = getStatuses(statusModel.status, hasFailed), - txUrl = statusModel.txUrl, + txUrl = statusModel.txExternalUrl, ) }