diff --git a/app/src/main/java/com/tangem/tap/domain/tokens/UserTokensRepository.kt b/app/src/main/java/com/tangem/tap/domain/tokens/UserTokensRepository.kt index 721657cdb8..34330160a0 100644 --- a/app/src/main/java/com/tangem/tap/domain/tokens/UserTokensRepository.kt +++ b/app/src/main/java/com/tangem/tap/domain/tokens/UserTokensRepository.kt @@ -26,10 +26,11 @@ class UserTokensRepository( private val networkService: UserTokensNetworkService, ) { suspend fun getUserTokens(card: Card): List { - if (DemoHelper.isDemoCardId(card.cardId)) { - return loadDemoCurrencies() - } val userId = card.getUserId() + if (DemoHelper.isDemoCardId(card.cardId)) { + return loadTokensOffline(card, userId).ifEmpty { loadDemoCurrencies() } + } + if (!NetworkConnectivity.getInstance().isOnlineOrConnecting()) { return loadTokensOffline(card, userId) } @@ -68,9 +69,15 @@ class UserTokensRepository( } suspend fun loadBlockchainsToDerive(card: Card): List { - return storageService.getUserTokens(card.getUserId())?.toBlockchainNetworks() ?: storageService.getUserTokens( - card, - ).toBlockchainNetworks() + val userId = card.getUserId() + val blockchainNetworks = loadTokensOffline(card, userId).toBlockchainNetworks() + + if (DemoHelper.isDemoCardId(card.cardId)) { + return blockchainNetworks + .ifEmpty { loadDemoCurrencies().toBlockchainNetworks() } + } + + return blockchainNetworks } private fun loadDemoCurrencies(): List { diff --git a/domain/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt b/domain/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt index a720d8bf19..b11840f128 100644 --- a/domain/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt +++ b/domain/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt @@ -137,4 +137,13 @@ fun Blockchain.toCoinId(): String { Blockchain.SaltPay, Blockchain.SaltPayTestnet -> "xdai" Blockchain.Unknown -> "unknown" } -} \ No newline at end of file +} + +fun Blockchain.isSupportedInApp(): Boolean { + return !excludedBlockchains.contains(this) +} + +private val excludedBlockchains = listOf( + Blockchain.Optimism, // TODO: remove when fee calculation is fixed + Blockchain.SaltPay, +) \ No newline at end of file diff --git a/domain/src/main/java/com/tangem/domain/common/extensions/CardSdk.kt b/domain/src/main/java/com/tangem/domain/common/extensions/CardSdk.kt index 204602df42..acc0fc7bf0 100644 --- a/domain/src/main/java/com/tangem/domain/common/extensions/CardSdk.kt +++ b/domain/src/main/java/com/tangem/domain/common/extensions/CardSdk.kt @@ -21,8 +21,9 @@ fun Card.supportedBlockchains(): List { (Blockchain.fromCurve(EllipticCurve.Secp256k1) + Blockchain.fromCurve(EllipticCurve.Ed25519)).distinct() } } - val filtered = supportedBlockchains.filter { isTestCard == it.isTestnet() } - return filtered + return supportedBlockchains + .filter { isTestCard == it.isTestnet() } + .filter { it.isSupportedInApp() } } fun Card.supportedTokens(): List {