Updated on 2026-08-14

This commit is contained in:
Tangem 2024-09-02 13:28:13 +05:00
parent 47e284436a
commit 0387fb8a4f
10 changed files with 33 additions and 57 deletions

View file

@ -299,6 +299,7 @@ internal class DefaultStakingRepository(
YieldBalanceWrapperDTO(
balances = result,
integrationId = requestBody.integrationId,
addresses = requestBody.addresses,
),
)
},
@ -317,14 +318,7 @@ internal class DefaultStakingRepository(
?: error("Could not get integrationId")
stakingBalanceStore.get(userWalletId, integrationId)
.collectLatest {
send(
yieldBalanceConverter.convert(
YieldBalanceConverter.Data(
balance = it,
integrationId = integrationId,
),
),
)
send(yieldBalanceConverter.convert(it))
}
}
@ -351,12 +345,7 @@ internal class DefaultStakingRepository(
val result = stakingBalanceStore.getSyncOrNull(userWalletId, integrationId)
?: return@withContext YieldBalance.Error
yieldBalanceConverter.convert(
YieldBalanceConverter.Data(
balance = result,
integrationId = integrationId,
),
)
yieldBalanceConverter.convert(result)
}
}
@ -385,7 +374,7 @@ internal class DefaultStakingRepository(
null
}
}
.distinct()
.distinctBy { it.second }
.map { getBalanceRequestData(it.first, it.second) }
.ifEmpty { return@invokeOnExpire }
val result = stakeKitApi.getMultipleYieldBalances(availableCurrencies).getOrThrow()

View file

@ -1,24 +1,22 @@
package com.tangem.data.staking.converters
import com.tangem.data.staking.converters.action.PendingActionConverter
import com.tangem.datasource.api.stakekit.models.response.model.BalanceDTO
import com.tangem.domain.staking.model.stakekit.BalanceItem
import com.tangem.domain.staking.model.stakekit.BalanceType
import com.tangem.domain.staking.model.stakekit.YieldBalance
import com.tangem.domain.staking.model.stakekit.YieldBalanceItem
import com.tangem.datasource.api.stakekit.models.response.model.YieldBalanceWrapperDTO
import com.tangem.domain.staking.model.stakekit.*
import com.tangem.utils.converter.Converter
internal class YieldBalanceConverter : Converter<YieldBalanceConverter.Data, YieldBalance> {
internal class YieldBalanceConverter : Converter<YieldBalanceWrapperDTO, YieldBalance> {
private val pendingActionConverter by lazy(LazyThreadSafetyMode.NONE) { PendingActionConverter() }
override fun convert(value: Data): YieldBalance {
return if (value.balance.isEmpty()) {
override fun convert(value: YieldBalanceWrapperDTO): YieldBalance {
return if (value.balances.isEmpty()) {
YieldBalance.Empty
} else {
YieldBalance.Data(
address = value.addresses.address,
balance = YieldBalanceItem(
items = value.balance.map { item ->
items = value.balances.map { item ->
BalanceItem(
type = BalanceType.valueOf(item.type.name),
amount = item.amount,
@ -35,9 +33,4 @@ internal class YieldBalanceConverter : Converter<YieldBalanceConverter.Data, Yie
)
}
}
data class Data(
val balance: List<BalanceDTO>,
val integrationId: String?,
)
}

View file

@ -15,14 +15,7 @@ internal class YieldBalanceListConverter : Converter<Set<YieldBalanceWrapperDTO>
YieldBalanceList.Empty
} else {
YieldBalanceList.Data(
balances = value.map {
converter.convert(
YieldBalanceConverter.Data(
balance = it.balances,
integrationId = it.integrationId,
),
)
},
balances = value.map(converter::convert),
)
}
}