diff --git a/app/src/main/java/com/tangem/tap/common/moduleMessage/domain/DomainErrorConverters.kt b/app/src/main/java/com/tangem/tap/common/moduleMessage/domain/DomainErrorConverters.kt index aeb3723a1a..7f5221041e 100644 --- a/app/src/main/java/com/tangem/tap/common/moduleMessage/domain/DomainErrorConverters.kt +++ b/app/src/main/java/com/tangem/tap/common/moduleMessage/domain/DomainErrorConverters.kt @@ -28,6 +28,7 @@ private class AddCustomTokenConverter( val rawMessage = when (customTokenError) { AddCustomTokenError.Warning.PotentialScamToken -> R.string.custom_token_validation_error_not_found AddCustomTokenError.Warning.TokenAlreadyAdded -> R.string.custom_token_validation_error_already_added + AddCustomTokenError.Warning.UnsupportedSolanaToken -> R.string.alert_manage_tokens_unsupported_message AddCustomTokenError.InvalidContractAddress -> R.string.custom_token_creation_error_invalid_contract_address AddCustomTokenError.NetworkIsNotSelected -> R.string.custom_token_creation_error_network_not_selected AddCustomTokenError.InvalidDerivationPath -> R.string.custom_token_creation_error_invalid_derivation_path diff --git a/domain/src/main/java/com/tangem/domain/DomainError.kt b/domain/src/main/java/com/tangem/domain/DomainError.kt index d7b24eccbf..74ff7f01a4 100644 --- a/domain/src/main/java/com/tangem/domain/DomainError.kt +++ b/domain/src/main/java/com/tangem/domain/DomainError.kt @@ -42,5 +42,6 @@ sealed class AddCustomTokenError( sealed class Warning : AddCustomTokenError() { object PotentialScamToken : Warning() object TokenAlreadyAdded : Warning() + object UnsupportedSolanaToken: Warning() } } \ No newline at end of file diff --git a/domain/src/main/java/com/tangem/domain/features/addCustomToken/CustomCurrency.kt b/domain/src/main/java/com/tangem/domain/features/addCustomToken/CustomCurrency.kt index 67f62551eb..a09d2f3907 100644 --- a/domain/src/main/java/com/tangem/domain/features/addCustomToken/CustomCurrency.kt +++ b/domain/src/main/java/com/tangem/domain/features/addCustomToken/CustomCurrency.kt @@ -11,10 +11,6 @@ import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenState /** [REDACTED_AUTHOR] */ -enum class CompleteDataType { - Blockchain, Token -} - sealed class CustomCurrency( val network: Blockchain, val derivationPath: DerivationPath?, diff --git a/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenHub.kt b/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenHub.kt index 82aadfae67..00728ab1e2 100644 --- a/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenHub.kt +++ b/domain/src/main/java/com/tangem/domain/features/addCustomToken/redux/AddCustomTokenHub.kt @@ -12,8 +12,9 @@ import com.tangem.domain.AddCustomTokenException import com.tangem.domain.DomainDialog import com.tangem.domain.DomainWrapped import com.tangem.domain.common.TapWorkarounds.derivationStyle +import com.tangem.domain.common.extensions.canHandleToken import com.tangem.domain.common.extensions.fromNetworkId -import com.tangem.domain.common.extensions.supportedTokens +import com.tangem.domain.common.extensions.supportedBlockchains import com.tangem.domain.common.extensions.toNetworkId import com.tangem.domain.common.form.* import com.tangem.domain.features.addCustomToken.* @@ -226,6 +227,15 @@ internal class AddCustomTokenHub : BaseStoreHub("AddCustomT val singleTokenContract = foundToken.networks[0] fillTokenFields(foundToken, singleTokenContract) + if (canHandleToken(Network.getFieldValue())) { + AddCustomTokenError.Warning.UnsupportedSolanaToken.remove() + } else { + AddCustomTokenError.Warning.UnsupportedSolanaToken.add() + updateTokenDetailFields(false) + updateAddButton(false) + return + } + val isInAppSavedTokens = isTokenPersistIntoAppSavedTokensList() if (isInAppSavedTokens) { updateTokenDetailFields(false) @@ -511,6 +521,11 @@ internal class AddCustomTokenHub : BaseStoreHub("AddCustomT dispatchOnMain(Warning.Replace(setOf(this), setOf(to))) } + private fun canHandleToken(blockchain: Blockchain): Boolean { + val card = globalState.scanResponse?.card ?: return false + return card.canHandleToken(blockchain) + } + @Throws private fun throwUnAppropriateInitialization(objName: String) { throw AddCustomTokenException.UnAppropriateInitializationException( @@ -533,7 +548,9 @@ private class AddCustomTokenReducer( } is OnCreate -> { val card = requireNotNull(globalState.scanResponse?.card) - val supportedTokenNetworkIds = card.supportedTokens().map { it.toNetworkId() } + val supportedTokenNetworkIds = card.supportedBlockchains() + .filter { it.canHandleTokens() } + .map { it.toNetworkId() } val tangemTechServiceManager = AddCustomTokenService( tangemTechService = globalState.networkServices.tangemTechService, supportedTokenNetworkIds = supportedTokenNetworkIds