Updated on 2026-08-14
This commit is contained in:
parent
6bc907fe3c
commit
ee6a55de7b
2 changed files with 34 additions and 9 deletions
|
|
@ -1,9 +1,15 @@
|
|||
package com.tangem.tap.features.wallet.redux
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import com.tangem.blockchain.common.*
|
||||
import com.tangem.blockchain.common.Amount
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.blockchain.common.DerivationStyle
|
||||
import com.tangem.blockchain.common.Token
|
||||
import com.tangem.blockchain.common.Wallet
|
||||
import com.tangem.blockchain.common.WalletManager
|
||||
import com.tangem.blockchain.common.address.AddressType
|
||||
import com.tangem.common.extensions.isZero
|
||||
import com.tangem.domain.common.TapWorkarounds.derivationStyle
|
||||
import com.tangem.domain.common.extensions.canHandleToken
|
||||
import com.tangem.domain.common.extensions.toCoinId
|
||||
import com.tangem.domain.features.addCustomToken.CustomCurrency
|
||||
|
|
@ -19,15 +25,21 @@ import com.tangem.tap.domain.extensions.sellIsAllowed
|
|||
import com.tangem.tap.domain.tokens.models.BlockchainNetwork
|
||||
import com.tangem.tap.features.onboarding.products.twins.redux.TwinCardsState
|
||||
import com.tangem.tap.features.tokens.redux.TokenWithBlockchain
|
||||
import com.tangem.tap.features.wallet.models.*
|
||||
import com.tangem.tap.features.wallet.models.PendingTransaction
|
||||
import com.tangem.tap.features.wallet.models.TotalBalance
|
||||
import com.tangem.tap.features.wallet.models.WalletRent
|
||||
import com.tangem.tap.features.wallet.models.WalletWarning
|
||||
import com.tangem.tap.features.wallet.models.hasPendingTransactions
|
||||
import com.tangem.tap.features.wallet.models.hasSendableAmounts
|
||||
import com.tangem.tap.features.wallet.models.isSendableAmount
|
||||
import com.tangem.tap.features.wallet.redux.reducers.calculateTotalFiatAmount
|
||||
import com.tangem.tap.features.wallet.redux.reducers.findTotalBalanceState
|
||||
import com.tangem.tap.features.wallet.ui.BalanceStatus
|
||||
import com.tangem.tap.features.wallet.ui.BalanceWidgetData
|
||||
import com.tangem.tap.network.exchangeServices.CurrencyExchangeManager
|
||||
import com.tangem.tap.store
|
||||
import org.rekotlin.StateType
|
||||
import java.math.BigDecimal
|
||||
import org.rekotlin.StateType
|
||||
import kotlin.properties.ReadOnlyProperty
|
||||
|
||||
data class WalletState(
|
||||
|
|
@ -271,12 +283,23 @@ data class WalletState(
|
|||
|
||||
private fun updateTotalBalance(): WalletState {
|
||||
return if (wallets.isNotEmpty()) {
|
||||
val walletsData = wallets.flatMap(WalletStore::walletsData)
|
||||
val globalState = store.state.globalState
|
||||
val walletsData = wallets
|
||||
.flatMap(WalletStore::walletsData)
|
||||
.filterNot { wallet ->
|
||||
wallet.currency.isCustomCurrency(
|
||||
derivationStyle = globalState
|
||||
.scanResponse
|
||||
?.card
|
||||
?.derivationStyle
|
||||
)
|
||||
}
|
||||
|
||||
this.copy(
|
||||
totalBalance = TotalBalance(
|
||||
state = walletsData.findTotalBalanceState(),
|
||||
fiatAmount = walletsData.calculateTotalFiatAmount(),
|
||||
fiatCurrency = store.state.globalState.appCurrency
|
||||
fiatCurrency = globalState.appCurrency
|
||||
)
|
||||
)
|
||||
} else this.copy(
|
||||
|
|
|
|||
|
|
@ -6,16 +6,18 @@ import com.tangem.tap.features.wallet.ui.BalanceStatus
|
|||
import java.math.BigDecimal
|
||||
|
||||
fun List<WalletData>.findTotalBalanceState(): TotalBalance.State {
|
||||
return this.mapToTotalBalanceState()
|
||||
return this
|
||||
.mapToTotalBalanceState()
|
||||
.reduce(TotalBalance.State::or)
|
||||
}
|
||||
|
||||
fun List<WalletData>.calculateTotalFiatAmount(): BigDecimal {
|
||||
return this.map { it.currencyData.fiatAmount ?: BigDecimal.ZERO }
|
||||
return this
|
||||
.map { it.currencyData.fiatAmount ?: BigDecimal.ZERO }
|
||||
.reduce(BigDecimal::plus)
|
||||
}
|
||||
|
||||
fun List<WalletData>.mapToTotalBalanceState(): List<TotalBalance.State> {
|
||||
private fun List<WalletData>.mapToTotalBalanceState(): List<TotalBalance.State> {
|
||||
return this.map {
|
||||
when (it.currencyData.status) {
|
||||
BalanceStatus.VerifiedOnline,
|
||||
|
|
@ -31,7 +33,7 @@ fun List<WalletData>.mapToTotalBalanceState(): List<TotalBalance.State> {
|
|||
}
|
||||
}
|
||||
|
||||
infix fun TotalBalance.State.or(newState: TotalBalance.State): TotalBalance.State {
|
||||
private infix fun TotalBalance.State.or(newState: TotalBalance.State): TotalBalance.State {
|
||||
return when (this) {
|
||||
TotalBalance.State.Loading -> when (newState) {
|
||||
TotalBalance.State.Loading,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue