Updated on 2026-08-14

This commit is contained in:
Tangem 2023-04-21 13:54:29 +03:00
parent 97351cf3b7
commit 6f379ec96f
2 changed files with 25 additions and 14 deletions

View file

@ -205,16 +205,7 @@ internal fun List<WalletDataModel>.updateSelectedAddress(
if (index == -1) return this
val oldWalletData = this[index]
val addresses = oldWalletData.walletAddresses
?: return this
val selectedAddress = addresses.list
.firstOrNull { it.type == addressType }
?: addresses.selectedAddress
val updatedWalletData = oldWalletData.copy(
walletAddresses = addresses.copy(
selectedAddress = selectedAddress,
),
)
val updatedWalletData = oldWalletData.updateSelectedAddress(addressType)
if (oldWalletData == updatedWalletData) return this
return this.toMutableList().apply {
@ -222,6 +213,21 @@ internal fun List<WalletDataModel>.updateSelectedAddress(
}
}
internal fun WalletDataModel.updateSelectedAddress(
addressType: AddressType,
): WalletDataModel {
val addresses = walletAddresses ?: return this
val selectedAddress = addresses.list
.firstOrNull { it.type == addressType }
?: addresses.selectedAddress
return this.copy(
walletAddresses = addresses.copy(
selectedAddress = selectedAddress,
),
)
}
internal fun WalletDataModel.isSameWalletData(other: WalletDataModel): Boolean {
return this.currency == other.currency
}

View file

@ -183,8 +183,13 @@ class SingleWalletView : WalletView() {
}
}
// FIXME: Move to model watcher
private var watchedPrimaryWallet: WalletDataModel? = null
private fun setupAddressCard(state: WalletState, binding: FragmentWalletBinding) = with(binding.lAddress) {
val primaryWallet = state.primaryWalletData
if (primaryWallet == watchedPrimaryWallet) return@with
watchedPrimaryWallet = primaryWallet
if (primaryWallet?.walletAddresses != null && primaryWallet.currency is Currency.Blockchain) {
binding.lAddress.root.show()
if (primaryWallet.shouldShowMultipleAddress()) {
@ -211,16 +216,16 @@ class SingleWalletView : WalletView() {
),
)
}
setupCardInfo(state)
setupCardInfo(primaryWallet)
} else {
binding.lAddress.root.hide()
}
}
private fun setupCardInfo(state: WalletState) {
private fun setupCardInfo(walletData: WalletDataModel) {
val textView = binding?.lAddress?.tvInfo
val blockchain = state.primaryWalletData?.currency?.blockchain
if (textView != null && blockchain != null) {
val blockchain = walletData.currency.blockchain
if (textView != null) {
textView.text = textView.getString(
id = R.string.address_qr_code_message_format,
blockchain.fullName,