Updated on 2026-08-14

This commit is contained in:
Tangem 2024-05-16 02:22:35 +08:00
parent 55942f2208
commit 6cf85272f3
11 changed files with 45 additions and 14 deletions

View file

@ -13,8 +13,10 @@ import com.tangem.datasource.config.models.ConfigValueModel
import com.tangem.datasource.config.models.ProviderModel
import com.tangem.libs.blockchain_sdk.BuildConfig
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch
import timber.log.Timber
internal typealias BlockchainProvidersResponse = Map<String, List<ProviderModel>>
@ -57,6 +59,7 @@ internal class DefaultBlockchainSDKFactory(
return combine(
flow = configStore.get(),
flow2 = blockchainProviderTypesStore.get(),
// flow3 = subscribe on feature toggles changes, TODO: [REDACTED_JIRA]
transform = walletManagerFactoryCreator::create,
)
.stateIn(scope = mainScope, started = SharingStarted.Eagerly, initialValue = null)

View file

@ -1,10 +1,12 @@
package com.tangem.blockchainsdk
import com.tangem.blockchain.common.AccountCreator
import com.tangem.blockchain.common.BlockchainFeatureToggles
import com.tangem.blockchain.common.BlockchainSdkConfig
import com.tangem.blockchain.common.WalletManagerFactory
import com.tangem.blockchain.common.datastorage.BlockchainDataStorage
import com.tangem.blockchain.common.logging.BlockchainSDKLogger
import com.tangem.blockchainsdk.featuretoggles.BlockchainSDKFeatureToggles
import timber.log.Timber
import javax.inject.Inject
@ -21,6 +23,7 @@ internal class WalletManagerFactoryCreator @Inject constructor(
private val accountCreator: AccountCreator,
private val blockchainDataStorage: BlockchainDataStorage,
private val blockchainSDKLogger: BlockchainSDKLogger,
private val blockchainSDKFeatureToggles: BlockchainSDKFeatureToggles,
) {
fun create(config: BlockchainSdkConfig, blockchainProviderTypes: BlockchainProviderTypes): WalletManagerFactory {
@ -30,6 +33,9 @@ internal class WalletManagerFactoryCreator @Inject constructor(
config = config,
blockchainProviderTypes = blockchainProviderTypes,
accountCreator = accountCreator,
featureToggles = BlockchainFeatureToggles(
isCardanoTokenSupport = blockchainSDKFeatureToggles.isCardanoTokensSupportEnabled,
),
blockchainDataStorage = blockchainDataStorage,
loggers = listOf(blockchainSDKLogger),
)

View file

@ -7,8 +7,10 @@ import com.tangem.blockchainsdk.DefaultBlockchainSDKFactory
import com.tangem.blockchainsdk.WalletManagerFactoryCreator
import com.tangem.blockchainsdk.accountcreator.DefaultAccountCreator
import com.tangem.blockchainsdk.datastorage.DefaultBlockchainDataStorage
import com.tangem.blockchainsdk.featuretoggles.DefaultBlockchainSDKFeatureToggles
import com.tangem.blockchainsdk.loader.BlockchainProvidersResponseLoader
import com.tangem.blockchainsdk.store.DefaultRuntimeStore
import com.tangem.core.featuretoggle.manager.FeatureTogglesManager
import com.tangem.datasource.api.common.AuthProvider
import com.tangem.datasource.api.tangemTech.TangemTechApi
import com.tangem.datasource.asset.loader.AssetLoader
@ -49,11 +51,13 @@ internal object BlockchainSDKFactoryModule {
tangemTechApi: TangemTechApi,
appPreferencesStore: AppPreferencesStore,
blockchainSDKLogger: BlockchainSDKLogger,
featureTogglesManager: FeatureTogglesManager,
): WalletManagerFactoryCreator {
return WalletManagerFactoryCreator(
accountCreator = DefaultAccountCreator(authProvider, tangemTechApi),
blockchainDataStorage = DefaultBlockchainDataStorage(appPreferencesStore),
blockchainSDKLogger = blockchainSDKLogger,
blockchainSDKFeatureToggles = DefaultBlockchainSDKFeatureToggles(featureTogglesManager),
)
}
}

View file

@ -0,0 +1,6 @@
package com.tangem.blockchainsdk.featuretoggles
internal interface BlockchainSDKFeatureToggles {
val isCardanoTokensSupportEnabled: Boolean
}

View file

@ -0,0 +1,11 @@
package com.tangem.blockchainsdk.featuretoggles
import com.tangem.core.featuretoggle.manager.FeatureTogglesManager
internal class DefaultBlockchainSDKFeatureToggles(
private val featureTogglesManager: FeatureTogglesManager,
) : BlockchainSDKFeatureToggles {
override val isCardanoTokensSupportEnabled: Boolean
get() = featureTogglesManager.isFeatureEnabled(name = "CARDANO_TOKENS_SUPPORT_ENABLED")
}