Updated on 2026-08-14
This commit is contained in:
parent
2e09b2e3ca
commit
a67518573f
9 changed files with 78 additions and 34 deletions
|
|
@ -4,6 +4,7 @@ import com.tangem.blockchain.common.Blockchain
|
|||
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
||||
import com.tangem.domain.common.extensions.supportedBlockchains
|
||||
import com.tangem.domain.common.extensions.toNetworkId
|
||||
import com.tangem.domain.common.util.cardTypesResolver
|
||||
import com.tangem.tap.features.customtoken.impl.data.converters.FoundTokenConverter
|
||||
import com.tangem.tap.features.customtoken.impl.domain.CustomTokenRepository
|
||||
import com.tangem.tap.features.customtoken.impl.domain.models.FoundToken
|
||||
|
|
@ -27,8 +28,9 @@ class DefaultCustomTokenRepository(
|
|||
) : CustomTokenRepository {
|
||||
|
||||
override suspend fun findToken(address: String, networkId: String?): FoundToken {
|
||||
val supportedTokenNetworkIds = requireNotNull(reduxStateHolder.scanResponse?.card)
|
||||
.supportedBlockchains()
|
||||
val scanResponse = requireNotNull(reduxStateHolder.scanResponse)
|
||||
val supportedTokenNetworkIds = requireNotNull(scanResponse.card)
|
||||
.supportedBlockchains(scanResponse.cardTypesResolver)
|
||||
.filter(Blockchain::canHandleTokens)
|
||||
.map(Blockchain::toNetworkId)
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import com.tangem.crypto.hdWallet.DerivationPath
|
|||
import com.tangem.crypto.hdWallet.HDWalletError
|
||||
import com.tangem.domain.AddCustomTokenError
|
||||
import com.tangem.domain.common.extensions.*
|
||||
import com.tangem.domain.common.util.cardTypesResolver
|
||||
import com.tangem.domain.common.util.derivationStyleProvider
|
||||
import com.tangem.domain.features.addCustomToken.CustomCurrency
|
||||
import com.tangem.tap.domain.model.WalletDataModel
|
||||
|
|
@ -206,9 +207,11 @@ internal class AddCustomTokenViewModel @Inject constructor(
|
|||
|
||||
private fun getNetworkSelectorItems(): List<SelectorItem.Title> {
|
||||
val defaultNetwork = createNetworkSelectorItem(blockchain = Blockchain.Unknown)
|
||||
val scanResponse = reduxStateHolder.scanResponse
|
||||
return listOf(defaultNetwork) + Blockchain.values()
|
||||
.filter { blockchain ->
|
||||
reduxStateHolder.scanResponse?.card?.supportedBlockchains()?.contains(blockchain) == true
|
||||
scanResponse?.card?.supportedBlockchains(scanResponse.cardTypesResolver)
|
||||
?.contains(blockchain) == true
|
||||
}
|
||||
.sortedBy(Blockchain::fullName)
|
||||
.map(::createNetworkSelectorItem)
|
||||
|
|
@ -404,7 +407,11 @@ internal class AddCustomTokenViewModel @Inject constructor(
|
|||
val isSupportedToken = if (!isNetworkSelected()) {
|
||||
true
|
||||
} else {
|
||||
reduxStateHolder.scanResponse?.card?.canHandleToken(networkSelectorValue) ?: false
|
||||
val scanResponse = reduxStateHolder.scanResponse
|
||||
scanResponse?.card?.canHandleToken(
|
||||
blockchain = networkSelectorValue,
|
||||
cardTypesResolver = scanResponse.cardTypesResolver,
|
||||
) ?: false
|
||||
}
|
||||
|
||||
return buildSet {
|
||||
|
|
@ -438,8 +445,12 @@ internal class AddCustomTokenViewModel @Inject constructor(
|
|||
address = uiState.form.contractAddressInputField.value,
|
||||
blockchain = networkSelectorValue,
|
||||
)
|
||||
val isSupportedToken = reduxStateHolder.scanResponse?.card
|
||||
?.canHandleToken(networkSelectorValue)
|
||||
val scanResponse = reduxStateHolder.scanResponse
|
||||
val isSupportedToken = scanResponse?.card
|
||||
?.canHandleToken(
|
||||
blockchain = networkSelectorValue,
|
||||
cardTypesResolver = scanResponse.cardTypesResolver,
|
||||
)
|
||||
?: false
|
||||
|
||||
uiState.copySealed(
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import com.tangem.blockchain.common.Blockchain
|
|||
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
||||
import com.tangem.domain.common.extensions.supportedBlockchains
|
||||
import com.tangem.domain.common.extensions.toNetworkId
|
||||
import com.tangem.domain.common.util.cardTypesResolver
|
||||
import com.tangem.tap.features.tokens.impl.data.converters.CoinsResponseConverter
|
||||
import com.tangem.tap.features.tokens.impl.domain.models.Token
|
||||
import com.tangem.tap.proxy.AppStateHolder
|
||||
|
|
@ -38,7 +39,8 @@ internal class TangemApiTokensPagingSource(
|
|||
val page = params.key ?: 0
|
||||
|
||||
return runCatching(dispatchers.io) {
|
||||
val supportedBlockchains = reduxStateHolder.scanResponse?.card?.supportedBlockchains()
|
||||
val scanResponse = reduxStateHolder.scanResponse
|
||||
val supportedBlockchains = scanResponse?.card?.supportedBlockchains(scanResponse.cardTypesResolver)
|
||||
?: Blockchain.values().toList()
|
||||
|
||||
api.getCoins(
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import com.tangem.core.ui.extensions.getActiveIconRes
|
|||
import com.tangem.domain.common.TapWorkarounds.useOldStyleDerivation
|
||||
import com.tangem.domain.common.extensions.canHandleToken
|
||||
import com.tangem.domain.common.extensions.fromNetworkId
|
||||
import com.tangem.domain.common.util.cardTypesResolver
|
||||
import com.tangem.tap.common.extensions.fullNameWithoutTestnet
|
||||
import com.tangem.tap.common.extensions.getGreyedOutIconRes
|
||||
import com.tangem.tap.common.extensions.getNetworkName
|
||||
|
|
@ -349,8 +350,14 @@ internal class TokensListViewModel @Inject constructor(
|
|||
toggledNetwork.changeToggleState()
|
||||
}
|
||||
} else {
|
||||
val scanResponse = reduxStateHolder.scanResponse
|
||||
val isUnsupportedToken =
|
||||
!(reduxStateHolder.scanResponse?.card?.canHandleToken(token.blockchain) ?: false)
|
||||
!(
|
||||
scanResponse?.card?.canHandleToken(
|
||||
blockchain = token.blockchain,
|
||||
cardTypesResolver = scanResponse.cardTypesResolver,
|
||||
) ?: false
|
||||
)
|
||||
|
||||
if (isUnsupportedToken) {
|
||||
router.openUnsupportedSoltanaNetworkAlert()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue