Updated on 2026-08-14
This commit is contained in:
parent
bee2be0994
commit
b32a182053
16 changed files with 81 additions and 92 deletions
|
|
@ -5,9 +5,10 @@ import com.tangem.datasource.local.yieldsupply.YieldMarketsStore
|
|||
import com.tangem.data.yield.supply.converters.YieldMarketTokenConverter
|
||||
import com.tangem.datasource.api.tangemTech.YieldSupplyApi
|
||||
import com.tangem.data.yield.supply.converters.YieldTokenStatusConverter
|
||||
import com.tangem.data.yield.supply.converters.YieldTokenChartConverter
|
||||
import com.tangem.domain.yield.supply.YieldSupplyMarketRepository
|
||||
import com.tangem.domain.yield.supply.models.YieldMarketToken
|
||||
import com.tangem.domain.yield.supply.models.YieldTokenStatus
|
||||
import com.tangem.domain.yield.supply.models.YieldSupplyMarketChartData
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.withContext
|
||||
|
|
@ -31,8 +32,13 @@ internal class DefaultYieldSupplyMarketRepository(
|
|||
|
||||
override fun getMarketsFlow(): Flow<List<YieldMarketToken>> = store.get()
|
||||
|
||||
override suspend fun getTokenStatus(contractAddress: String): YieldTokenStatus {
|
||||
override suspend fun getTokenStatus(contractAddress: String): YieldMarketToken {
|
||||
val response = yieldSupplyApi.getYieldTokenStatus(contractAddress).getOrThrow()
|
||||
return YieldTokenStatusConverter.convert(response)
|
||||
}
|
||||
|
||||
override suspend fun getTokenChart(contractAddress: String): YieldSupplyMarketChartData {
|
||||
val response = yieldSupplyApi.getYieldTokenChart(contractAddress).getOrThrow()
|
||||
return YieldTokenChartConverter.convert(response)
|
||||
}
|
||||
}
|
||||
|
|
@ -11,14 +11,7 @@ internal object YieldMarketTokenConverter : Converter<YieldMarketsResponse.Marke
|
|||
tokenSymbol = value.tokenSymbol,
|
||||
tokenName = value.tokenName,
|
||||
apy = value.apy,
|
||||
totalSupplied = value.totalSupplied,
|
||||
totalBorrowed = value.totalBorrowed,
|
||||
liquidityRate = value.liquidityRate,
|
||||
borrowRate = value.borrowRate,
|
||||
utilizationRate = value.utilizationRate,
|
||||
isActive = value.isActive,
|
||||
ltv = value.ltv,
|
||||
liquidationThreshold = value.liquidationThreshold,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.tangem.data.yield.supply.converters
|
||||
|
||||
import com.tangem.datasource.api.tangemTech.models.YieldTokenChartResponse
|
||||
import com.tangem.domain.yield.supply.models.YieldSupplyMarketChartData
|
||||
|
||||
internal object YieldTokenChartConverter {
|
||||
|
||||
fun convert(response: YieldTokenChartResponse): YieldSupplyMarketChartData {
|
||||
val y = response.data.map { it.avgApy.toDouble() }
|
||||
val x = response.data.map { it.bucketIndex.toDouble() }
|
||||
val avr = response.averageApy.toDouble()
|
||||
return YieldSupplyMarketChartData(y = y, x = x, avr = avr)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,29 +1,17 @@
|
|||
package com.tangem.data.yield.supply.converters
|
||||
|
||||
import com.tangem.datasource.api.tangemTech.models.YieldTokenStatusResponse
|
||||
import com.tangem.domain.yield.supply.models.YieldTokenStatus
|
||||
import com.tangem.domain.yield.supply.models.YieldMarketToken
|
||||
import com.tangem.utils.converter.Converter
|
||||
|
||||
internal object YieldTokenStatusConverter : Converter<YieldTokenStatusResponse, YieldTokenStatus> {
|
||||
override fun convert(value: YieldTokenStatusResponse): YieldTokenStatus {
|
||||
return YieldTokenStatus(
|
||||
internal object YieldTokenStatusConverter : Converter<YieldTokenStatusResponse, YieldMarketToken> {
|
||||
override fun convert(value: YieldTokenStatusResponse): YieldMarketToken {
|
||||
return YieldMarketToken(
|
||||
tokenAddress = value.tokenAddress,
|
||||
tokenSymbol = value.tokenSymbol,
|
||||
tokenName = value.tokenName,
|
||||
apy = value.apy,
|
||||
totalSupplied = value.totalSupplied,
|
||||
totalBorrowed = value.totalBorrowed,
|
||||
liquidityRate = value.liquidityRate,
|
||||
borrowRate = value.borrowRate,
|
||||
utilizationRate = value.utilizationRate,
|
||||
isActive = value.isActive,
|
||||
ltv = value.ltv,
|
||||
liquidationThreshold = value.liquidationThreshold,
|
||||
decimals = value.decimals,
|
||||
chainId = value.chainId,
|
||||
priority = value.priority,
|
||||
isEnabled = value.isEnabled,
|
||||
lastUpdatedAt = value.lastUpdatedAt,
|
||||
)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue