diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/express/TangemExpressApi.kt b/core/datasource/src/main/java/com/tangem/datasource/api/express/TangemExpressApi.kt index 61c2a6c25a..b7055574a3 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/express/TangemExpressApi.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/express/TangemExpressApi.kt @@ -50,6 +50,8 @@ interface TangemExpressApi { @Query("rateType") rateType: String, @Query("toAddress") toAddress: String, @Query("requestId") requestId: String, + @Query("refundAddress") refundAddress: String?, // for cex only + @Query("refundExtraId") refundExtraId: String?, // for cex only ): ApiResponse @GET("exchange-status") diff --git a/features/swap/data/src/main/java/com/tangem/feature/swap/DefaultSwapRepository.kt b/features/swap/data/src/main/java/com/tangem/feature/swap/DefaultSwapRepository.kt index 5ce1371a15..c67891b454 100644 --- a/features/swap/data/src/main/java/com/tangem/feature/swap/DefaultSwapRepository.kt +++ b/features/swap/data/src/main/java/com/tangem/feature/swap/DefaultSwapRepository.kt @@ -256,6 +256,8 @@ internal class DefaultSwapRepository @Inject constructor( providerId: String, rateType: RateType, toAddress: String, + refundAddress: String?, // for cex only + refundExtraId: String?, // for cex only ): Either { return withContext(coroutineDispatcher.io) { try { @@ -272,6 +274,8 @@ internal class DefaultSwapRepository @Inject constructor( rateType = rateType.name.lowercase(), toAddress = toAddress, requestId = requestId, + refundAddress = refundAddress, + refundExtraId = refundExtraId, ).getOrThrow() if (dataSignatureVerifier.verifySignature(response.signature, response.txDetailsJson)) { val txDetails = parseTxDetails(response.txDetailsJson) diff --git a/features/swap/domain/api/src/main/java/com/tangem/feature/swap/domain/api/SwapRepository.kt b/features/swap/domain/api/src/main/java/com/tangem/feature/swap/domain/api/SwapRepository.kt index 8fcb79ae26..0a04d8950f 100644 --- a/features/swap/domain/api/src/main/java/com/tangem/feature/swap/domain/api/SwapRepository.kt +++ b/features/swap/domain/api/src/main/java/com/tangem/feature/swap/domain/api/SwapRepository.kt @@ -65,6 +65,8 @@ interface SwapRepository { providerId: String, rateType: RateType, toAddress: String, + refundAddress: String? = null, // for cex only + refundExtraId: String? = null, // for cex only ): Either fun getNativeTokenForNetwork(networkId: String): CryptoCurrency diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt index 6df1eadf9d..08b31e9a2e 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt @@ -589,6 +589,8 @@ internal class SwapInteractorImpl @Inject constructor( providerId = swapProvider.providerId, rateType = RateType.FLOAT, toAddress = currencyToGet.value.networkAddress?.defaultAddress?.value ?: "", + refundAddress = currencyToSend.value.networkAddress?.defaultAddress?.value, + refundExtraId = null, // currently always null ).getOrElse { return SwapTransactionState.ExpressError(it) } val exchangeDataCex =