Updated on 2026-08-14

This commit is contained in:
Tangem 2022-12-07 16:45:43 +03:00
parent 3d8aba391f
commit 922b302cb1
14 changed files with 159 additions and 55 deletions

View file

@ -11,15 +11,15 @@ sealed class TotalFiatBalance {
object Loading : TotalFiatBalance()
class Refreshing(
data class Refreshing(
override val amount: BigDecimal,
) : TotalFiatBalance()
class Error(
data class Error(
override val amount: BigDecimal,
) : TotalFiatBalance()
class Loaded(
data class Loaded(
override val amount: BigDecimal,
) : TotalFiatBalance()
}

View file

@ -10,7 +10,7 @@ class UserWalletBuilder(
) {
private var backupCardsIds: Set<String> = emptySet()
fun setBackupCardsIds(backupCardsIds: Set<String>?) = this.apply {
fun backupCardsIds(backupCardsIds: Set<String>?) = this.apply {
if (backupCardsIds != null) {
this.backupCardsIds = backupCardsIds
}

View file

@ -10,25 +10,70 @@ import com.tangem.tap.features.wallet.models.Currency
import com.tangem.tap.features.wallet.redux.reducers.createAddressesData
import java.math.BigDecimal
class WalletStoreBuilder(
private val userWallet: UserWallet,
) {
private var walletManager: WalletManager? = null
private var blockchainNetwork: BlockchainNetwork? = null
interface WalletStoreBuilder {
fun build(): WalletStoreModel
fun setWalletManager(walletManager: WalletManager?) = this.apply {
interface BlockchainNetworkWalletStoreBuilder : WalletStoreBuilder {
fun walletManager(walletManager: WalletManager?): WalletStoreBuilder
}
interface WalletMangerWalletStoreBuilder : WalletStoreBuilder {
fun blockchainNetwork(blockchainNetwork: BlockchainNetwork?): WalletStoreBuilder
}
companion object {
operator fun invoke(
userWallet: UserWallet,
blockchainNetwork: BlockchainNetwork,
): BlockchainNetworkWalletStoreBuilder {
return BlockchainNetworkWalletStoreBuilderImpl(userWallet, blockchainNetwork)
}
operator fun invoke(
userWallet: UserWallet,
walletManager: WalletManager,
): WalletMangerWalletStoreBuilder {
return WalletMangerWalletStoreBuilderImpl(userWallet, walletManager)
}
}
}
private class BlockchainNetworkWalletStoreBuilderImpl(
private val userWallet: UserWallet,
private val blockchainNetwork: BlockchainNetwork,
) : WalletStoreBuilder.BlockchainNetworkWalletStoreBuilder {
private var walletManager: WalletManager? = null
override fun walletManager(walletManager: WalletManager?) = this.apply {
this.walletManager = walletManager
}
fun setBlockchainNetwork(blockchainNetwork: BlockchainNetwork?) = this.apply {
override fun build(): WalletStoreModel {
val blockchainWalletData = blockchainNetwork.getBlockchainWalletData(walletManager)
val tokensWalletsData = blockchainNetwork.getTokensWalletsData(walletManager)
return WalletStoreModel(
userWalletId = userWallet.walletId,
blockchainNetwork = blockchainNetwork,
walletManager = walletManager,
walletsData = (listOf(blockchainWalletData) + tokensWalletsData),
walletRent = null,
)
}
}
private class WalletMangerWalletStoreBuilderImpl(
private val userWallet: UserWallet,
private val walletManager: WalletManager,
) : WalletStoreBuilder.WalletMangerWalletStoreBuilder {
private var blockchainNetwork: BlockchainNetwork? = null
override fun blockchainNetwork(blockchainNetwork: BlockchainNetwork?) = this.apply {
this.blockchainNetwork = blockchainNetwork
}
fun build(): WalletStoreModel {
val blockchainNetwork = this.blockchainNetwork
?: walletManager?.let(BlockchainNetwork::fromWalletManager)
?: error("Blockchain network and wallet manager must not be null")
override fun build(): WalletStoreModel {
val blockchainNetwork = this.blockchainNetwork ?: BlockchainNetwork.fromWalletManager(walletManager)
val blockchainWalletData = blockchainNetwork.getBlockchainWalletData(walletManager)
val tokensWalletsData = blockchainNetwork.getTokensWalletsData(walletManager)