Updated on 2026-08-14

This commit is contained in:
Tangem 2025-04-23 14:43:35 +05:00
parent c227fd1001
commit 0b8ff3e56e
8 changed files with 13 additions and 16 deletions

View file

@ -135,13 +135,10 @@ internal class DefaultNFTRepository @Inject constructor(
override suspend fun isNFTSupported(network: Network): Boolean = network.canHandleNFTs()
override suspend fun getNFTSupportedNetworks(userWalletId: UserWalletId): List<Network> {
val userWallet = requireNotNull(userWalletsStore.getSyncOrNull(userWalletId)) {
"User wallet [$userWalletId] not found"
}
val userWallet = userWalletsStore.getSyncStrict(userWalletId)
return Blockchain
.entries
.filter { it.canHandleNFTs() }
.filter { !it.isTestnet() }
.filter { it.canHandleNFTs() && !it.isTestnet() }
.mapNotNull {
getNetwork(
blockchain = it,

View file

@ -4,5 +4,5 @@ import com.tangem.domain.tokens.model.Network
data class NFTNetworks(
val availableNetworks: List<Network>,
val notAvailableNetworks: List<Network>,
val unavailableNetworks: List<Network>,
)

View file

@ -12,7 +12,7 @@ class FilterNFTAvailableNetworksUseCase(
withContext(dispatchers.default) {
NFTNetworks(
availableNetworks = networks.availableNetworks.filter(searchQuery),
notAvailableNetworks = networks.notAvailableNetworks.filter(searchQuery),
unavailableNetworks = networks.unavailableNetworks.filter(searchQuery),
)
}

View file

@ -19,14 +19,14 @@ class GetNFTNetworksUseCase(
.filter { nftRepository.isNFTSupported(it) }
.sortedBy { it.name }
val notAvailableNetworks = nftRepository
val unavailableNetworks = nftRepository
.getNFTSupportedNetworks(userWalletId)
.filter { supportedNetwork -> availableNetworks.none { it.id == supportedNetwork.id } }
.sortedBy { it.name }
NFTNetworks(
availableNetworks = availableNetworks,
notAvailableNetworks = notAvailableNetworks,
unavailableNetworks = unavailableNetworks,
)
}
}

View file

@ -20,7 +20,7 @@ internal data class NFTReceiveUM(
data class Content(
val availableItems: ImmutableList<NFTNetworkUM>,
val notAvailableItems: ImmutableList<NFTNetworkUM>,
val unavailableItems: ImmutableList<NFTNetworkUM>,
) : Networks()
}
}

View file

@ -17,13 +17,13 @@ internal class UpdateDataStateTransformer(
override fun transform(prevState: NFTReceiveUM): NFTReceiveUM = prevState.copy(
networks = when {
networks.availableNetworks.isEmpty() && networks.notAvailableNetworks.isEmpty()
networks.availableNetworks.isEmpty() && networks.unavailableNetworks.isEmpty()
-> NFTReceiveUM.Networks.Empty
else -> NFTReceiveUM.Networks.Content(
availableItems = networks.availableNetworks
.map { it.transform(true) }
.toPersistentList(),
notAvailableItems = networks.notAvailableNetworks
unavailableItems = networks.unavailableNetworks
.map { it.transform(false) }
.toPersistentList(),
)

View file

@ -58,7 +58,7 @@ internal class NFTReceiveModel @Inject constructor(
search = getInitialSearchBar(),
networks = NFTReceiveUM.Networks.Content(
availableItems = persistentListOf(),
notAvailableItems = persistentListOf(),
unavailableItems = persistentListOf(),
),
bottomSheetConfig = null,
),

View file

@ -54,13 +54,13 @@ internal fun NFTReceiveNetworksContent(state: NFTReceiveUM.Networks.Content, mod
}
networks(state.availableItems)
}
if (state.notAvailableItems.isNotEmpty()) {
if (state.unavailableItems.isNotEmpty()) {
item(
key = "not_available_title",
) {
Title(resourceReference(R.string.nft_receive_unavailable_section_title))
}
networks(state.notAvailableItems)
networks(state.unavailableItems)
}
}
}
@ -207,7 +207,7 @@ private fun Preview_NFTReceiveNetworksUM() {
onItemClick = { },
),
),
notAvailableItems = persistentListOf(),
unavailableItems = persistentListOf(),
),
)
}