Updated on 2026-08-14
This commit is contained in:
parent
c227fd1001
commit
0b8ff3e56e
8 changed files with 13 additions and 16 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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>,
|
||||
)
|
||||
|
|
@ -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),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@ internal data class NFTReceiveUM(
|
|||
|
||||
data class Content(
|
||||
val availableItems: ImmutableList<NFTNetworkUM>,
|
||||
val notAvailableItems: ImmutableList<NFTNetworkUM>,
|
||||
val unavailableItems: ImmutableList<NFTNetworkUM>,
|
||||
) : Networks()
|
||||
}
|
||||
}
|
||||
|
|
@ -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(),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ internal class NFTReceiveModel @Inject constructor(
|
|||
search = getInitialSearchBar(),
|
||||
networks = NFTReceiveUM.Networks.Content(
|
||||
availableItems = persistentListOf(),
|
||||
notAvailableItems = persistentListOf(),
|
||||
unavailableItems = persistentListOf(),
|
||||
),
|
||||
bottomSheetConfig = null,
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue