From 207da4af08352d51db22fc5c9cc6f8d2a0d3c02b Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 30 Oct 2024 13:56:00 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tap/ApplicationEntryPoint.kt | 3 ++ .../java/com/tangem/tap/TangemApplication.kt | 5 +++ .../tap/proxy/redux/DaggerGraphState.kt | 2 ++ .../di/ExcludedBlockchainsModule.kt | 20 ++++++++++++ .../utils/ExcludedBlockchains.kt | 32 +++++++++++++++++++ 5 files changed, 62 insertions(+) create mode 100644 libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/ExcludedBlockchainsModule.kt create mode 100644 libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/utils/ExcludedBlockchains.kt diff --git a/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt b/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt index 81b845f7bc..22e43ff3d2 100644 --- a/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt +++ b/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt @@ -3,6 +3,7 @@ package com.tangem.tap import com.tangem.TangemSdkLogger import com.tangem.blockchainsdk.BlockchainSDKFactory import com.tangem.blockchainsdk.signer.TransactionSignerFactory +import com.tangem.blockchainsdk.utils.ExcludedBlockchains import com.tangem.common.routing.AppRouter import com.tangem.core.analytics.filter.OneTimeEventFilter import com.tangem.core.configtoggle.blockchain.ExcludedBlockchainsManager @@ -119,4 +120,6 @@ interface ApplicationEntryPoint { fun getOnboardingV2FeatureToggles(): OnboardingV2FeatureToggles fun getCoroutineDispatcherProvider(): CoroutineDispatcherProvider + + fun getExcludedBlockchains(): ExcludedBlockchains } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/TangemApplication.kt b/app/src/main/java/com/tangem/tap/TangemApplication.kt index ddb2c9f1bc..0cb1183a0c 100644 --- a/app/src/main/java/com/tangem/tap/TangemApplication.kt +++ b/app/src/main/java/com/tangem/tap/TangemApplication.kt @@ -9,6 +9,7 @@ import com.tangem.TangemSdkLogger import com.tangem.blockchain.network.BlockchainSdkRetrofitBuilder import com.tangem.blockchainsdk.BlockchainSDKFactory import com.tangem.blockchainsdk.signer.TransactionSignerFactory +import com.tangem.blockchainsdk.utils.ExcludedBlockchains import com.tangem.common.routing.AppRouter import com.tangem.core.analytics.Analytics import com.tangem.core.analytics.api.ParamsInterceptor @@ -189,6 +190,9 @@ abstract class TangemApplication : Application(), ImageLoaderFactory { private val dispatchers: CoroutineDispatcherProvider get() = entryPoint.getCoroutineDispatcherProvider() + + private val excludedBlockchains: ExcludedBlockchains + get() = entryPoint.getExcludedBlockchains() // endregion override fun onCreate() { @@ -269,6 +273,7 @@ abstract class TangemApplication : Application(), ImageLoaderFactory { onrampFeatureToggles = onrampFeatureToggles, environmentConfigStorage = environmentConfigStorage, onboardingV2FeatureToggles = onboardingV2FeatureToggles, + excludedBlockchains = excludedBlockchains, ), ), ) diff --git a/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt b/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt index 075686701f..6827cc546c 100644 --- a/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt +++ b/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt @@ -2,6 +2,7 @@ package com.tangem.tap.proxy.redux import com.tangem.blockchainsdk.BlockchainSDKFactory import com.tangem.blockchainsdk.signer.TransactionSignerFactory +import com.tangem.blockchainsdk.utils.ExcludedBlockchains import com.tangem.common.routing.AppRouter import com.tangem.core.navigation.share.ShareManager import com.tangem.core.navigation.url.UrlOpener @@ -71,4 +72,5 @@ data class DaggerGraphState( val onrampFeatureToggles: OnrampFeatureToggles? = null, val environmentConfigStorage: EnvironmentConfigStorage? = null, val onboardingV2FeatureToggles: OnboardingV2FeatureToggles? = null, + val excludedBlockchains: ExcludedBlockchains? = null, ) : StateType \ No newline at end of file diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/ExcludedBlockchainsModule.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/ExcludedBlockchainsModule.kt new file mode 100644 index 0000000000..c63d1dd071 --- /dev/null +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/ExcludedBlockchainsModule.kt @@ -0,0 +1,20 @@ +package com.tangem.blockchainsdk.di + +import com.tangem.blockchainsdk.utils.ExcludedBlockchains +import com.tangem.core.configtoggle.blockchain.ExcludedBlockchainsManager +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +internal object ExcludedBlockchainsModule { + + @Provides + @Singleton + fun bindExcludedBlockchains(excludedBlockchainsManager: ExcludedBlockchainsManager): ExcludedBlockchains { + return ExcludedBlockchains(excludedBlockchainsManager) + } +} \ No newline at end of file diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/utils/ExcludedBlockchains.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/utils/ExcludedBlockchains.kt new file mode 100644 index 0000000000..b443a9b0e7 --- /dev/null +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/utils/ExcludedBlockchains.kt @@ -0,0 +1,32 @@ +package com.tangem.blockchainsdk.utils + +import com.tangem.blockchain.common.Blockchain +import com.tangem.core.configtoggle.blockchain.ExcludedBlockchainsManager +import javax.inject.Inject + +class ExcludedBlockchains @Inject internal constructor( + private val excludedBlockchainsManager: ExcludedBlockchainsManager, +) : Set { + + private val excludedBlockchains: Set by lazy(mode = LazyThreadSafetyMode.NONE) { + excludedBlockchainsManager.excludedBlockchainsIds.fold(mutableSetOf()) { acc, blockchainId -> + val blockchain = Blockchain.fromId(blockchainId) + acc.add(blockchain) + + blockchain.getTestnetVersion()?.let { acc.add(it) } + + acc + } + } + + override val size: Int + get() = excludedBlockchains.size + + override fun contains(element: Blockchain): Boolean = excludedBlockchains.contains(element) + + override fun containsAll(elements: Collection): Boolean = excludedBlockchains.containsAll(elements) + + override fun isEmpty(): Boolean = excludedBlockchains.isEmpty() + + override fun iterator(): Iterator = excludedBlockchains.iterator() +} \ No newline at end of file