Updated on 2026-08-14

This commit is contained in:
Tangem 2025-12-04 11:15:40 +03:00
parent fa55f1753c
commit 1ccd4f3b6c
4 changed files with 23 additions and 3 deletions

View file

@ -7,6 +7,11 @@ import kotlinx.coroutines.flow.update
internal typealias ChangedCurrencies = Map<ManagedCryptoCurrency.Token, Set<Network>>
internal data class CurrencyUpdates(
val toAdd: ChangedCurrencies = emptyMap(),
val toRemove: ChangedCurrencies = emptyMap(),
)
internal class ChangedCurrenciesManager {
val currenciesToAdd: MutableStateFlow<ChangedCurrencies> = MutableStateFlow(emptyMap())

View file

@ -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)
},

View file

@ -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,

View file

@ -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,
),