Updated on 2026-08-14
This commit is contained in:
parent
fa55f1753c
commit
1ccd4f3b6c
4 changed files with 23 additions and 3 deletions
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue