Updated on 2026-08-14
This commit is contained in:
parent
a74ee9640c
commit
d574159e14
10 changed files with 97 additions and 40 deletions
|
|
@ -46,6 +46,7 @@ internal class SwapRepositoryImpl @Inject constructor(
|
|||
private val swapConverter = SwapConverter()
|
||||
private val leastTokenInfoConverter = LeastTokenInfoConverter()
|
||||
private val swapPairInfoConverter = SwapPairInfoConverter()
|
||||
private val rateTypeConverter = RateTypeConverter()
|
||||
|
||||
override suspend fun getPairs(
|
||||
initialCurrency: LeastTokenInfo,
|
||||
|
|
@ -257,6 +258,31 @@ internal class SwapRepositoryImpl @Inject constructor(
|
|||
return oneInchApiFactory.getApi(networkId)
|
||||
}
|
||||
|
||||
override suspend fun getExchangeQuote(
|
||||
fromContractAddress: String,
|
||||
fromNetwork: String,
|
||||
toContractAddress: String,
|
||||
toNetwork: String,
|
||||
fromAmount: BigDecimal,
|
||||
providerId: Int,
|
||||
rateType: RateType
|
||||
): ExchangeQuote {
|
||||
val response = tangemExpressApi.getExchangeQuote(
|
||||
fromContractAddress,
|
||||
fromNetwork,
|
||||
toContractAddress,
|
||||
toNetwork,
|
||||
fromAmount,
|
||||
providerId,
|
||||
rateTypeConverter.convertBack(rateType)
|
||||
).getOrThrow()
|
||||
|
||||
return ExchangeQuote(
|
||||
toAmount = response.toAmount,
|
||||
allowanceContract = response.allowanceContract
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
// TODO("get this ids from blockchain enum later")
|
||||
private const val OPTIMISM_ID = "optimistic-ethereum"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package com.tangem.feature.swap.converters
|
||||
|
||||
import com.tangem.datasource.api.express.models.response.RateType
|
||||
import com.tangem.utils.converter.TwoWayConverter
|
||||
import com.tangem.feature.swap.domain.models.domain.RateType as RateTypeDomain
|
||||
|
||||
class RateTypeConverter : TwoWayConverter<RateType, RateTypeDomain> {
|
||||
|
||||
override fun convert(value: RateType): RateTypeDomain {
|
||||
return when (value) {
|
||||
RateType.FIXED -> RateTypeDomain.FIXED
|
||||
RateType.FLOAT -> RateTypeDomain.FLOAT
|
||||
}
|
||||
}
|
||||
|
||||
override fun convertBack(value: RateTypeDomain): RateType {
|
||||
return when (value) {
|
||||
RateTypeDomain.FIXED -> RateType.FIXED
|
||||
RateTypeDomain.FLOAT -> RateType.FLOAT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
package com.tangem.feature.swap.converters
|
||||
|
||||
import com.tangem.datasource.api.express.models.response.RateType
|
||||
import com.tangem.datasource.api.express.models.response.SwapPair
|
||||
import com.tangem.datasource.api.express.models.response.SwapPairProvider
|
||||
import com.tangem.feature.swap.domain.models.domain.LeastTokenInfo
|
||||
import com.tangem.feature.swap.domain.models.domain.SwapPairLeast as SwapPairDomain
|
||||
import com.tangem.feature.swap.domain.models.domain.SwapPairProvider as SwapPairProviderDomain
|
||||
import com.tangem.feature.swap.domain.models.domain.RateType as RateTypeDomain
|
||||
import com.tangem.feature.swap.domain.models.domain.SwapProvider as SwapPairProviderDomain
|
||||
import com.tangem.utils.converter.Converter
|
||||
|
||||
class SwapPairInfoConverter : Converter<SwapPair, SwapPairDomain> {
|
||||
|
||||
private val rateTypeConverter = RateTypeConverter()
|
||||
|
||||
override fun convert(value: SwapPair): SwapPairDomain {
|
||||
return SwapPairDomain(
|
||||
from = LeastTokenInfo(
|
||||
|
|
@ -30,14 +30,8 @@ class SwapPairInfoConverter : Converter<SwapPair, SwapPairDomain> {
|
|||
private fun convertProvider(swapPairProvider: SwapPairProvider): SwapPairProviderDomain {
|
||||
return SwapPairProviderDomain(
|
||||
providerId = swapPairProvider.providerId,
|
||||
rateTypes = swapPairProvider.rateTypes.map { convertRateType(it) },
|
||||
rateTypes = swapPairProvider.rateTypes.map { rateTypeConverter.convert(it) },
|
||||
)
|
||||
}
|
||||
|
||||
private fun convertRateType(rateType: RateType): RateTypeDomain {
|
||||
return when (rateType) {
|
||||
RateType.FIXED -> RateTypeDomain.FIXED
|
||||
RateType.FLOAT -> RateTypeDomain.FLOAT
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue