From 514d6f5e177a20acd2fca8017f6ebd449123b1e0 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 18 Apr 2025 12:24:51 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../state/converters/BalanceItemConverter.kt | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/BalanceItemConverter.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/BalanceItemConverter.kt index ac9f4c0942..da6dc0fcff 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/BalanceItemConverter.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/BalanceItemConverter.kt @@ -2,23 +2,28 @@ package com.tangem.features.staking.impl.presentation.state.converters import com.tangem.core.ui.extensions.* import com.tangem.core.ui.format.bigdecimal.crypto +import com.tangem.core.ui.format.bigdecimal.fiat import com.tangem.core.ui.format.bigdecimal.format -import com.tangem.core.ui.utils.BigDecimalFormatter import com.tangem.core.ui.utils.parseBigDecimal import com.tangem.domain.appcurrency.model.AppCurrency import com.tangem.domain.staking.model.stakekit.BalanceItem import com.tangem.domain.staking.model.stakekit.BalanceType import com.tangem.domain.staking.model.stakekit.BalanceType.Companion.isClickable import com.tangem.domain.staking.model.stakekit.Yield +import com.tangem.domain.staking.model.stakekit.YieldBalance import com.tangem.domain.staking.model.stakekit.action.StakingActionType +import com.tangem.domain.staking.utils.getRewardStakingBalance import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.features.staking.impl.R import com.tangem.features.staking.impl.presentation.state.BalanceState +import com.tangem.lib.crypto.BlockchainUtils import com.tangem.lib.crypto.BlockchainUtils.isTon import com.tangem.utils.Provider import com.tangem.utils.converter.Converter +import com.tangem.utils.extensions.orZero import kotlinx.collections.immutable.toPersistentList import org.joda.time.DateTime +import java.math.BigDecimal import java.util.Calendar internal class BalanceItemConverter( @@ -34,8 +39,7 @@ internal class BalanceItemConverter( val validator = yield.validators.firstOrNull { value.validatorAddress?.contains(it.address, ignoreCase = true) == true } - - val cryptoAmount = value.amount + val cryptoAmount = value.getBalanceValue() val fiatAmount = cryptoCurrencyStatus.value.fiatRate?.times(cryptoAmount) val title = value.type.getTitle(validator?.name) @@ -53,11 +57,12 @@ internal class BalanceItemConverter( ), fiatAmount = fiatAmount, formattedFiatAmount = stringReference( - BigDecimalFormatter.formatFiatAmount( - fiatAmount = fiatAmount, - fiatCurrencyCode = appCurrency.code, - fiatCurrencySymbol = appCurrency.symbol, - ), + fiatAmount.format { + fiat( + fiatCurrencyCode = appCurrency.code, + fiatCurrencySymbol = appCurrency.symbol, + ) + }, ), rawCurrencyId = value.rawCurrencyId, pendingActions = value.pendingActions.toPersistentList(), @@ -67,6 +72,18 @@ internal class BalanceItemConverter( } } + private fun BalanceItem.getBalanceValue(): BigDecimal { + val isIncludeStakingTotalBalance = BlockchainUtils.isIncludeStakingTotalBalance( + blockchainId = cryptoCurrencyStatus.currency.network.id.value, + ) + val yieldBalance = cryptoCurrencyStatus.value.yieldBalance as? YieldBalance.Data + return if (isIncludeStakingTotalBalance) { + amount + } else { + amount - yieldBalance?.getRewardStakingBalance().orZero() + } + } + private fun BalanceItem.isClickable(): Boolean { val networkId = cryptoCurrencyStatus.currency.network.id.value return when {