diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt index 1f38373d86..186e712a30 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt @@ -1,5 +1,6 @@ package com.tangem.tap.features.customtoken.impl.domain +import com.tangem.blockchain.blockchains.cardano.CardanoUtils import com.tangem.blockchain.common.Blockchain import com.tangem.common.CompletionResult import com.tangem.common.card.EllipticCurve @@ -123,9 +124,15 @@ class DefaultCustomTokenInteractor( it.blockchain.getSupportedCurves().contains(curve) }.mapNotNull { it.derivationPath }.map { DerivationPath(it) } - val bothCandidates = (manageTokensCandidates + customTokensCandidates).distinct() + val bothCandidates = (manageTokensCandidates + customTokensCandidates).distinct().toMutableList() if (bothCandidates.isEmpty()) return null + currencyList.find { it is Currency.Blockchain && it.blockchain == Blockchain.Cardano } ?.let { currency -> + currency.derivationPath?.let { + bothCandidates.add(CardanoUtils.extendedDerivationPath(DerivationPath(it))) + } + } + val mapKeyOfWalletPublicKey = wallet.publicKey.toMapKey() val alreadyDerivedKeys: ExtendedPublicKeysMap = scanResponse.derivedKeys[mapKeyOfWalletPublicKey] ?: ExtendedPublicKeysMap(emptyMap()) diff --git a/app/src/main/java/com/tangem/tap/features/tokens/impl/domain/DefaultTokensListInteractor.kt b/app/src/main/java/com/tangem/tap/features/tokens/impl/domain/DefaultTokensListInteractor.kt index c61c1a2f7e..6757fceb65 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/impl/domain/DefaultTokensListInteractor.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/impl/domain/DefaultTokensListInteractor.kt @@ -1,6 +1,7 @@ package com.tangem.tap.features.tokens.impl.domain import androidx.paging.PagingData +import com.tangem.blockchain.blockchains.cardano.CardanoUtils import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.derivation.DerivationStyle import com.tangem.common.CompletionResult @@ -190,9 +191,15 @@ internal class DefaultTokensListInteractor( .mapNotNull(Currency::derivationPath) .map(::DerivationPath) - val bothCandidates = (manageTokensCandidates + customTokensCandidates).distinct() + val bothCandidates = (manageTokensCandidates + customTokensCandidates).distinct().toMutableList() if (bothCandidates.isEmpty()) return null + currencyList.find { it is Currency.Blockchain && it.blockchain == Blockchain.Cardano } ?.let { currency -> + currency.derivationPath?.let { + bothCandidates.add(CardanoUtils.extendedDerivationPath(DerivationPath(it))) + } + } + val mapKeyOfWalletPublicKey = wallet.publicKey.toMapKey() val alreadyDerivedKeys = scanResponse.derivedKeys[mapKeyOfWalletPublicKey] ?: ExtendedPublicKeysMap(emptyMap()) val alreadyDerivedPaths = alreadyDerivedKeys.keys.toList() diff --git a/app/src/main/java/com/tangem/tap/features/tokens/legacy/redux/TokensMiddleware.kt b/app/src/main/java/com/tangem/tap/features/tokens/legacy/redux/TokensMiddleware.kt index 67bbf74043..d6bd27491f 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/legacy/redux/TokensMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/legacy/redux/TokensMiddleware.kt @@ -1,5 +1,6 @@ package com.tangem.tap.features.tokens.legacy.redux +import com.tangem.blockchain.blockchains.cardano.CardanoUtils import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.derivation.DerivationStyle import com.tangem.common.CompletionResult @@ -179,9 +180,15 @@ object TokensMiddleware { it.blockchain.getSupportedCurves().contains(curve) }.mapNotNull { it.derivationPath }.map { DerivationPath(it) } - val bothCandidates = (manageTokensCandidates + customTokensCandidates).distinct() + val bothCandidates = (manageTokensCandidates + customTokensCandidates).distinct().toMutableList() if (bothCandidates.isEmpty()) return null + currencyList.find { it is Currency.Blockchain && it.blockchain == Blockchain.Cardano } ?.let { currency -> + currency.derivationPath?.let { + bothCandidates.add(CardanoUtils.extendedDerivationPath(DerivationPath(it))) + } + } + val mapKeyOfWalletPublicKey = wallet.publicKey.toMapKey() val alreadyDerivedKeys: ExtendedPublicKeysMap = scanResponse.derivedKeys[mapKeyOfWalletPublicKey] ?: ExtendedPublicKeysMap(emptyMap()) diff --git a/app/src/main/java/com/tangem/tap/proxy/DerivationManagerImpl.kt b/app/src/main/java/com/tangem/tap/proxy/DerivationManagerImpl.kt index 894467225e..7406d1b883 100644 --- a/app/src/main/java/com/tangem/tap/proxy/DerivationManagerImpl.kt +++ b/app/src/main/java/com/tangem/tap/proxy/DerivationManagerImpl.kt @@ -1,5 +1,6 @@ package com.tangem.tap.proxy +import com.tangem.blockchain.blockchains.cardano.CardanoUtils import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.Token import com.tangem.common.CompletionResult @@ -171,7 +172,7 @@ class DerivationManagerImpl( it.blockchain.getSupportedCurves().contains(curve) }.mapNotNull { it.derivationPath }.map { DerivationPath(it) } - val bothCandidates = (manageTokensCandidates + customTokensCandidates).distinct() + val bothCandidates = (manageTokensCandidates + customTokensCandidates).distinct().toMutableList() if (bothCandidates.isEmpty()) return null val mapKeyOfWalletPublicKey = wallet.publicKey.toMapKey() @@ -182,6 +183,12 @@ class DerivationManagerImpl( val toDerive = bothCandidates.filterNot { alreadyDerivedPaths.contains(it) } if (toDerive.isEmpty()) return null + currencyList.find { it is com.tangem.tap.features.wallet.models.Currency.Blockchain && it.blockchain == Blockchain.Cardano } ?.let { currency -> + currency.derivationPath?.let { + bothCandidates.add(CardanoUtils.extendedDerivationPath(DerivationPath(it))) + } + } + return DerivationData( derivations = mapKeyOfWalletPublicKey to toDerive, ) diff --git a/domain/legacy/src/main/java/com/tangem/domain/common/extensions/CardSdk.kt b/domain/legacy/src/main/java/com/tangem/domain/common/extensions/CardSdk.kt index 66d0a0f12d..aea826fa7c 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/common/extensions/CardSdk.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/common/extensions/CardSdk.kt @@ -24,13 +24,6 @@ fun CardDTO.supportedBlockchains(cardTypesResolver: CardTypesResolver): List