Updated on 2026-08-14

This commit is contained in:
Tangem 2022-03-17 22:05:06 +03:00
parent 645b8e54ad
commit 2c17fd0161
6 changed files with 40 additions and 40 deletions

View file

@ -32,7 +32,7 @@ data class WalletState(
val hashesCountVerified: Boolean? = null,
val walletDialog: StateDialog? = null,
val mainWarningsList: List<WarningMessage> = mutableListOf(),
val wallets: List<WalletData> = emptyList(),
val walletsData: List<WalletData> = emptyList(),
val walletManagers: List<WalletManager> = emptyList(),
val isMultiwalletAllowed: Boolean = false,
val cardCurrency: CryptoCurrencyName? = null,
@ -51,7 +51,7 @@ data class WalletState(
val isTangemTwins: Boolean
get() = store.state.globalState.scanResponse?.isTangemTwins() == true
val primaryWallet = if (wallets.isNotEmpty()) wallets[0] else null
val primaryWallet = if (walletsData.isNotEmpty()) walletsData[0] else null
val shouldShowDetails: Boolean =
primaryWallet?.currencyData?.status != BalanceStatus.EmptyCard &&
@ -61,7 +61,7 @@ data class WalletState(
get() = walletManagers.map { it.wallet.blockchain }
val currencies: List<Currency>
get() = wallets.mapNotNull { it.currency }
get() = walletsData.mapNotNull { it.currency }
fun getWalletManager(token: Token?): WalletManager? {
if (token == null) return null
@ -79,21 +79,21 @@ data class WalletState(
fun getWalletData(currency: Currency?): WalletData? {
if (currency == null) return null
return wallets.find { it.currency == currency }
return walletsData.find { it.currency == currency }
}
fun getWalletData(blockchain: Blockchain?): WalletData? {
if (blockchain == null) return null
return wallets.find { (it.currency as? Currency.Blockchain)?.blockchain == blockchain }
return walletsData.find { (it.currency as? Currency.Blockchain)?.blockchain == blockchain }
}
fun getWalletData(token: Token?): WalletData? {
if (token == null) return null
return wallets.find { (it.currency as? Currency.Token)?.token == token }
return walletsData.find { (it.currency as? Currency.Token)?.token == token }
}
fun getSelectedWalletData(): WalletData? {
return wallets.find { it.currency == selectedWallet }
return walletsData.find { it.currency == selectedWallet }
}
fun canBeRemoved(walletData: WalletData?): Boolean {
@ -132,9 +132,9 @@ data class WalletState(
}
fun replaceWalletInWallets(walletData: WalletData?): List<WalletData> {
if (walletData == null) return wallets
if (walletData == null) return walletsData
var changed = false
val updatedWallets = wallets.map {
val updatedWallets = walletsData.map {
if (it.currency == walletData.currency) {
changed = true
walletData
@ -142,12 +142,12 @@ data class WalletState(
it
}
}
return if (changed) updatedWallets else wallets + walletData
return if (changed) updatedWallets else walletsData + walletData
}
fun replaceSomeWallets(newWallets: List<WalletData>): List<WalletData> {
val remainingWallets: MutableList<WalletData> = newWallets.toMutableList()
val updatedWallets = wallets.map { wallet ->
val updatedWallets = walletsData.map { wallet ->
val newWallet = newWallets
.firstOrNull { wallet.currency == it.currency }
if (newWallet == null) {

View file

@ -99,7 +99,7 @@ class WalletMiddleware {
else -> {
globalState.tapWalletManager.loadFiatRate(
fiatCurrency = globalState.appCurrency,
currencies = walletState.wallets.mapNotNull { it.currency }
currencies = walletState.walletsData.mapNotNull { it.currency }
)
}
}
@ -170,7 +170,7 @@ class WalletMiddleware {
is WalletAction.LoadData -> {
scope.launch {
val scanNoteResponse = globalState.scanResponse ?: return@launch
if (!walletState.wallets.isEmpty()) {
if (walletState.walletsData.isNotEmpty()) {
globalState.tapWalletManager.reloadData(scanNoteResponse)
} else {
globalState.tapWalletManager.loadData(scanNoteResponse)

View file

@ -47,7 +47,7 @@ class MultiWalletReducer {
state.selectedWallet
}
state.copy(
wallets = wallets,
walletsData = wallets,
selectedWallet = selectedWallet
)
}
@ -63,7 +63,7 @@ class MultiWalletReducer {
mainButton = WalletMainButton.SendButton(false),
currency = Currency.Blockchain(action.blockchain),
)
val newState = state.copy(wallets = state.replaceWalletInWallets(walletData))
val newState = state.copy(walletsData = state.replaceWalletInWallets(walletData))
if (wallet != null && wallet.amounts[AmountType.Coin]?.value != null) {
OnWalletLoadedReducer().reduce(wallet, newState)
} else {
@ -72,11 +72,11 @@ class MultiWalletReducer {
}
is WalletAction.MultiWallet.AddTokens -> {
val wallets = action.tokens.mapNotNull { token -> token.toWallet(state) }
state.copy(wallets = state.replaceSomeWallets(wallets))
state.copy(walletsData = state.replaceSomeWallets(wallets))
}
is WalletAction.MultiWallet.AddToken -> {
val walletData = action.token.toWallet(state) ?: return state
state.copy(wallets = state.replaceWalletInWallets(walletData))
state.copy(walletsData = state.replaceWalletInWallets(walletData))
}
is WalletAction.MultiWallet.TokenLoaded -> {
val pendingTransactions = state.getWalletManager(action.token)
@ -109,7 +109,7 @@ class MultiWalletReducer {
currency = Currency.Token(action.token)
)
val wallets = state.replaceWalletInWallets(newTokenWalletData)
state.copy(wallets = wallets)
state.copy(walletsData = wallets)
}
is WalletAction.MultiWallet.SetIsMultiwalletAllowed ->
state.copy(isMultiwalletAllowed = action.isMultiwalletAllowed)
@ -118,18 +118,18 @@ class MultiWalletReducer {
state.copy(selectedWallet = action.walletData?.currency)
is WalletAction.MultiWallet.RemoveWallet -> {
val wallets = state.wallets.filterNot {
val wallets = state.walletsData.filterNot {
it.currency == action.walletData.currency
}
if (action.walletData.currency is Currency.Blockchain) {
state.copy(
wallets = wallets,
walletsData = wallets,
walletManagers = state.walletManagers.filterNot {
it.wallet.blockchain == action.walletData.currency.blockchain
}
)
} else {
state.copy(wallets = wallets)
state.copy(walletsData = wallets)
}

View file

@ -98,7 +98,7 @@ class OnWalletLoadedReducer {
ProgressState.Done
}
return walletState.copy(
state = state, wallets = wallets, error = null
state = state, walletsData = wallets, error = null
)
}
@ -158,7 +158,7 @@ class OnWalletLoadedReducer {
)
val wallets = walletData?.let { listOf(walletData) } ?: emptyList()
return walletState.copy(
state = ProgressState.Done, wallets = wallets, error = null
state = ProgressState.Done, walletsData = wallets, error = null
)
}
}

View file

@ -46,7 +46,7 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
is WalletAction.EmptyWallet -> {
newState = newState.copy(
state = ProgressState.Done,
wallets = listOf(
walletsData = listOf(
WalletData(
currencyData = BalanceWidgetData(BalanceStatus.EmptyCard),
mainButton = WalletMainButton.CreateWalletButton(true),
@ -58,7 +58,7 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
is WalletAction.LoadData.Failure -> {
when (action.error) {
is TapError.NoInternetConnection -> {
val wallets = newState.wallets
val wallets = newState.walletsData
.map {
it.copy(
currencyData = it.currencyData.copy(
@ -69,13 +69,13 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
newState = newState.copy(
state = ProgressState.Error,
error = ErrorType.NoInternetConnection,
wallets = wallets
walletsData = wallets
)
}
is TapError.UnknownBlockchain -> {
newState = newState.copy(
state = ProgressState.Done,
wallets = listOf(
walletsData = listOf(
WalletData(
currencyData = BalanceWidgetData(BalanceStatus.UnknownBlockchain),
currency = Currency.Blockchain(Blockchain.Unknown)
@ -94,7 +94,7 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
}
is WalletAction.LoadWallet -> {
if (action.blockchain == null) {
val wallets = newState.wallets.map { wallet ->
val wallets = newState.walletsData.map { wallet ->
wallet.copy(
currencyData = wallet.currencyData.copy(
@ -108,14 +108,14 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
}
newState = newState.copy(
state = ProgressState.Loading,
wallets = wallets,
walletsData = wallets,
)
} else {
val walletManager = newState.getWalletManager(action.blockchain) ?: return newState
val blockchain = walletManager.wallet.blockchain
val currencies = listOf(Currency.Blockchain(blockchain)) +
walletManager.cardTokens.map { Currency.Token(it) }
val newWallets = newState.wallets.filter { currencies.contains(it.currency) }
val newWallets = newState.walletsData.filter { currencies.contains(it.currency) }
.map { wallet ->
wallet.copy(
currencyData = wallet.currencyData.copy(
@ -128,7 +128,7 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
)
}
val wallets = newState.replaceSomeWallets(newWallets)
newState = newState.copy(wallets = newState.updateTradeCryptoState(exchangeManager, wallets))
newState = newState.copy(walletsData = newState.updateTradeCryptoState(exchangeManager, wallets))
}
}
is WalletAction.LoadWallet.Success -> newState =
@ -153,7 +153,7 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
}
newState = newState.copy(
state = progressState,
wallets = newState.updateTradeCryptoState(exchangeManager, wallets)
walletsData = newState.updateTradeCryptoState(exchangeManager, wallets)
)
}
is WalletAction.LoadWallet.Failure -> {
@ -188,7 +188,7 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
}
newState = newState.copy(
state = progressState,
wallets = newState.updateTradeCryptoState(exchangeManager, wallets)
walletsData = newState.updateTradeCryptoState(exchangeManager, wallets)
)
}
is WalletAction.SetArtworkId -> {
@ -243,7 +243,7 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
)
)
)
newState = newState.copy(wallets = wallets)
newState = newState.copy(walletsData = wallets)
}
is WalletAction.SetWalletRent -> {
var walletData = newState.getWalletData(action.blockchain)
@ -252,7 +252,7 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
} else {
walletData = walletData.copy(walletRent = WalletRent(action.minRent, action.rentExempt))
newState = newState.copy(
wallets = newState.replaceSomeWallets(listOf(walletData))
walletsData = newState.replaceSomeWallets(listOf(walletData))
)
}
}
@ -343,7 +343,7 @@ private fun setMultiWalletFiatRate(
),
fiatRate = rate, fiatRateString = rateFormatted
)
return state.copy(wallets = state.replaceWalletInWallets(newWalletData))
return state.copy(walletsData = state.replaceWalletInWallets(newWalletData))
}
private fun setSingeWalletFiatRate(
@ -361,7 +361,7 @@ private fun setSingeWalletFiatRate(
fiatRate = rate,
fiatRateString = rateFormatted
)
return state.copy(wallets = listOf(walletData))
return state.copy(walletsData = listOf(walletData))
} else if (currency is Currency.Token && currency.token == token) {
val tokenFiatAmount = wallet.getTokenAmount(token)?.value?.toFiatString(rate, appCurrency)
val tokenData = state.primaryWallet?.currencyData?.token?.copy(
@ -376,7 +376,7 @@ private fun setSingeWalletFiatRate(
)
)
val wallets = walletData?.let { listOf(walletData) } ?: emptyList()
return state.copy(wallets = wallets)
return state.copy(walletsData = wallets)
}
return state
}

View file

@ -94,11 +94,11 @@ class MultiWalletView : WalletView {
val fragment = fragment ?: return
val binding = binding ?: return
walletsAdapter.submitList(state.wallets, state.primaryBlockchain, state.primaryToken)
walletsAdapter.submitList(state.walletsData, state.primaryBlockchain, state.primaryToken)
binding.btnAddToken.setOnClickListener {
store.dispatch(TokensAction.LoadCurrencies)
store.dispatch(TokensAction.SetAddedCurrencies(state.wallets))
store.dispatch(TokensAction.SetAddedCurrencies(state.walletsData))
store.dispatch(NavigationAction.NavigateTo(AppScreen.AddTokens))
}
handleErrorStates(state = state, binding = binding, fragment = fragment)