From 1ccd4f3b6c941a63ee10a5c624d695bbfbcbc788 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 4 Dec 2025 11:15:40 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../utils/list/ChangedCurrenciesManager.kt | 5 +++++ .../utils/list/ManageTokensListManager.kt | 4 ++++ .../utils/mapper/CurrencyNetworksMapper.kt | 14 +++++++++++--- .../utils/ui/CurrencyItemOperations.kt | 3 +++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ChangedCurrenciesManager.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ChangedCurrenciesManager.kt index 0e54d8528d..44529b9688 100644 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ChangedCurrenciesManager.kt +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ChangedCurrenciesManager.kt @@ -7,6 +7,11 @@ import kotlinx.coroutines.flow.update internal typealias ChangedCurrencies = Map> +internal data class CurrencyUpdates( + val toAdd: ChangedCurrencies = emptyMap(), + val toRemove: ChangedCurrencies = emptyMap(), +) + internal class ChangedCurrenciesManager { val currenciesToAdd: MutableStateFlow = MutableStateFlow(emptyMap()) diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ManageTokensListManager.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ManageTokensListManager.kt index 59bf275e11..d0221350ce 100644 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ManageTokensListManager.kt +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ManageTokensListManager.kt @@ -329,6 +329,10 @@ internal class ManageTokensListManager @AssistedInject constructor( val updatedUiItem = uiBatch.data[currencyIndex].toggleExpanded( currency = currencyBatch.data[currencyIndex], isEditable = batches.canEditItems, + updates = CurrencyUpdates( + toAdd = currenciesToAdd.value, + toRemove = currenciesToRemove.value, + ), onSelectCurrencyNetwork = { networkId, isSelected -> selectNetwork(currencyBatch.key, currency, networkId, isSelected) }, diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/mapper/CurrencyNetworksMapper.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/mapper/CurrencyNetworksMapper.kt index 58cea15030..c92243274e 100644 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/mapper/CurrencyNetworksMapper.kt +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/mapper/CurrencyNetworksMapper.kt @@ -5,20 +5,28 @@ import com.tangem.domain.managetokens.model.ManagedCryptoCurrency.SourceNetwork import com.tangem.domain.models.network.Network import com.tangem.features.managetokens.entity.item.CurrencyItemUM.Basic.NetworksUM import com.tangem.features.managetokens.entity.item.CurrencyNetworkUM +import com.tangem.features.managetokens.utils.list.CurrencyUpdates import com.tangem.features.managetokens.utils.ui.getIconRes import kotlinx.collections.immutable.toImmutableList internal fun ManagedCryptoCurrency.Token.toUiNetworksModel( isExpanded: Boolean, isItemsEditable: Boolean, + updates: CurrencyUpdates, onSelectedStateChange: (SourceNetwork, Boolean) -> Unit, onLongTap: (SourceNetwork) -> Unit, ): NetworksUM { return if (isExpanded) { NetworksUM.Expanded( - networks = availableNetworks.map { - it.toCurrencyNetworkModel( - isSelected = it.network in addedIn, + networks = availableNetworks.map { sourceNetwork -> + val isSelectedByDefault = sourceNetwork.network in addedIn + val isSelected = when (sourceNetwork.network) { + in updates.toAdd[this].orEmpty() -> true + in updates.toRemove[this].orEmpty() -> false + else -> isSelectedByDefault + } + sourceNetwork.toCurrencyNetworkModel( + isSelected = isSelected, isEditable = isItemsEditable, onSelectedStateChange = onSelectedStateChange, onLongTap = onLongTap, diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/ui/CurrencyItemOperations.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/ui/CurrencyItemOperations.kt index d92b7108d0..fd675f17cd 100644 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/ui/CurrencyItemOperations.kt +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/ui/CurrencyItemOperations.kt @@ -4,12 +4,14 @@ import com.tangem.domain.managetokens.model.ManagedCryptoCurrency import com.tangem.domain.managetokens.model.ManagedCryptoCurrency.SourceNetwork import com.tangem.features.managetokens.entity.item.CurrencyItemUM import com.tangem.features.managetokens.entity.item.CurrencyItemUM.Basic.NetworksUM +import com.tangem.features.managetokens.utils.list.CurrencyUpdates import com.tangem.features.managetokens.utils.mapper.toUiNetworksModel import kotlinx.collections.immutable.toImmutableList internal fun CurrencyItemUM.toggleExpanded( currency: ManagedCryptoCurrency, isEditable: Boolean, + updates: CurrencyUpdates, onSelectCurrencyNetwork: (SourceNetwork, Boolean) -> Unit, onLongTap: (SourceNetwork) -> Unit, ): CurrencyItemUM { @@ -30,6 +32,7 @@ internal fun CurrencyItemUM.toggleExpanded( networks = currency.toUiNetworksModel( isExpanded = isExpanded, isItemsEditable = isEditable, + updates = updates, onSelectedStateChange = onSelectCurrencyNetwork, onLongTap = onLongTap, ),