Updated on 2026-08-14
This commit is contained in:
parent
94e12785e8
commit
43b0e6b83b
9 changed files with 29 additions and 49 deletions
|
|
@ -1,11 +1,9 @@
|
||||||
package com.tangem.blockchainsdk
|
package com.tangem.blockchainsdk
|
||||||
|
|
||||||
import com.tangem.blockchain.common.Blockchain
|
|
||||||
import com.tangem.blockchain.common.WalletManagerFactory
|
import com.tangem.blockchain.common.WalletManagerFactory
|
||||||
import com.tangem.blockchain.common.network.providers.ProviderType
|
|
||||||
import com.tangem.blockchainsdk.converters.BlockchainProviderTypesConverter
|
import com.tangem.blockchainsdk.converters.BlockchainProviderTypesConverter
|
||||||
import com.tangem.blockchainsdk.loader.BlockchainProvidersResponseLoader
|
import com.tangem.blockchainsdk.providers.BlockchainProviderTypesStore
|
||||||
import com.tangem.blockchainsdk.store.RuntimeStore
|
import com.tangem.blockchainsdk.providers.BlockchainProvidersResponseLoader
|
||||||
import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage
|
import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage
|
||||||
import com.tangem.datasource.local.config.providers.models.ProviderModel
|
import com.tangem.datasource.local.config.providers.models.ProviderModel
|
||||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||||
|
|
@ -16,7 +14,6 @@ import kotlinx.coroutines.launch
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
||||||
internal typealias BlockchainProvidersResponse = Map<String, List<ProviderModel>>
|
internal typealias BlockchainProvidersResponse = Map<String, List<ProviderModel>>
|
||||||
internal typealias BlockchainProviderTypes = Map<Blockchain, List<ProviderType>>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of Blockchain SDK components factory
|
* Implementation of Blockchain SDK components factory
|
||||||
|
|
@ -31,7 +28,7 @@ internal typealias BlockchainProviderTypes = Map<Blockchain, List<ProviderType>>
|
||||||
internal class DefaultBlockchainSDKFactory(
|
internal class DefaultBlockchainSDKFactory(
|
||||||
private val blockchainProvidersResponseLoader: BlockchainProvidersResponseLoader,
|
private val blockchainProvidersResponseLoader: BlockchainProvidersResponseLoader,
|
||||||
private val environmentConfigStorage: EnvironmentConfigStorage,
|
private val environmentConfigStorage: EnvironmentConfigStorage,
|
||||||
private val blockchainProviderTypesStore: RuntimeStore<BlockchainProviderTypes>,
|
private val blockchainProviderTypesStore: BlockchainProviderTypesStore,
|
||||||
private val walletManagerFactoryCreator: WalletManagerFactoryCreator,
|
private val walletManagerFactoryCreator: WalletManagerFactoryCreator,
|
||||||
dispatchers: CoroutineDispatcherProvider,
|
dispatchers: CoroutineDispatcherProvider,
|
||||||
) : BlockchainSDKFactory {
|
) : BlockchainSDKFactory {
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.tangem.blockchain.common.WalletManagerFactory
|
||||||
import com.tangem.blockchain.common.datastorage.BlockchainDataStorage
|
import com.tangem.blockchain.common.datastorage.BlockchainDataStorage
|
||||||
import com.tangem.blockchain.common.logging.BlockchainSDKLogger
|
import com.tangem.blockchain.common.logging.BlockchainSDKLogger
|
||||||
import com.tangem.blockchainsdk.featuretoggles.BlockchainSDKFeatureToggles
|
import com.tangem.blockchainsdk.featuretoggles.BlockchainSDKFeatureToggles
|
||||||
|
import com.tangem.blockchainsdk.providers.BlockchainProviderTypes
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@ package com.tangem.blockchainsdk.converters
|
||||||
|
|
||||||
import com.tangem.blockchain.common.Blockchain
|
import com.tangem.blockchain.common.Blockchain
|
||||||
import com.tangem.blockchain.common.network.providers.ProviderType
|
import com.tangem.blockchain.common.network.providers.ProviderType
|
||||||
import com.tangem.blockchainsdk.BlockchainProviderTypes
|
|
||||||
import com.tangem.blockchainsdk.BlockchainProvidersResponse
|
import com.tangem.blockchainsdk.BlockchainProvidersResponse
|
||||||
|
import com.tangem.blockchainsdk.providers.BlockchainProviderTypes
|
||||||
import com.tangem.blockchainsdk.utils.createPrivateProviderType
|
import com.tangem.blockchainsdk.utils.createPrivateProviderType
|
||||||
import com.tangem.blockchainsdk.utils.fromNetworkId
|
import com.tangem.blockchainsdk.utils.fromNetworkId
|
||||||
import com.tangem.datasource.local.config.providers.models.ProviderModel
|
import com.tangem.datasource.local.config.providers.models.ProviderModel
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ import com.tangem.blockchainsdk.WalletManagerFactoryCreator
|
||||||
import com.tangem.blockchainsdk.accountcreator.DefaultAccountCreator
|
import com.tangem.blockchainsdk.accountcreator.DefaultAccountCreator
|
||||||
import com.tangem.blockchainsdk.datastorage.DefaultBlockchainDataStorage
|
import com.tangem.blockchainsdk.datastorage.DefaultBlockchainDataStorage
|
||||||
import com.tangem.blockchainsdk.featuretoggles.DefaultBlockchainSDKFeatureToggles
|
import com.tangem.blockchainsdk.featuretoggles.DefaultBlockchainSDKFeatureToggles
|
||||||
import com.tangem.blockchainsdk.loader.BlockchainProvidersResponseLoader
|
import com.tangem.blockchainsdk.providers.BlockchainProviderTypesStore
|
||||||
import com.tangem.blockchainsdk.store.DefaultRuntimeStore
|
import com.tangem.blockchainsdk.providers.BlockchainProvidersResponseLoader
|
||||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||||
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
||||||
import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage
|
import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage
|
||||||
|
|
@ -30,12 +30,13 @@ internal object BlockchainSDKFactoryModule {
|
||||||
blockchainProvidersResponseLoader: BlockchainProvidersResponseLoader,
|
blockchainProvidersResponseLoader: BlockchainProvidersResponseLoader,
|
||||||
environmentConfigStorage: EnvironmentConfigStorage,
|
environmentConfigStorage: EnvironmentConfigStorage,
|
||||||
walletManagerFactoryCreator: WalletManagerFactoryCreator,
|
walletManagerFactoryCreator: WalletManagerFactoryCreator,
|
||||||
|
blockchainProviderTypesStore: BlockchainProviderTypesStore,
|
||||||
dispatchers: CoroutineDispatcherProvider,
|
dispatchers: CoroutineDispatcherProvider,
|
||||||
): BlockchainSDKFactory {
|
): BlockchainSDKFactory {
|
||||||
return DefaultBlockchainSDKFactory(
|
return DefaultBlockchainSDKFactory(
|
||||||
blockchainProvidersResponseLoader = blockchainProvidersResponseLoader,
|
blockchainProvidersResponseLoader = blockchainProvidersResponseLoader,
|
||||||
environmentConfigStorage = environmentConfigStorage,
|
environmentConfigStorage = environmentConfigStorage,
|
||||||
blockchainProviderTypesStore = DefaultRuntimeStore(defaultValue = emptyMap()),
|
blockchainProviderTypesStore = blockchainProviderTypesStore,
|
||||||
walletManagerFactoryCreator = walletManagerFactoryCreator,
|
walletManagerFactoryCreator = walletManagerFactoryCreator,
|
||||||
dispatchers = dispatchers,
|
dispatchers = dispatchers,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.tangem.blockchainsdk.providers
|
||||||
|
|
||||||
|
import com.tangem.blockchain.common.Blockchain
|
||||||
|
import com.tangem.blockchain.common.network.providers.ProviderType
|
||||||
|
import com.tangem.datasource.local.datastore.RuntimeStateStore
|
||||||
|
import javax.inject.Inject
|
||||||
|
import javax.inject.Singleton
|
||||||
|
|
||||||
|
internal typealias BlockchainProviderTypes = Map<Blockchain, List<ProviderType>>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Blockchain provider types store
|
||||||
|
*
|
||||||
|
[REDACTED_AUTHOR]
|
||||||
|
*/
|
||||||
|
@Singleton
|
||||||
|
class BlockchainProviderTypesStore @Inject constructor() :
|
||||||
|
RuntimeStateStore<BlockchainProviderTypes> by RuntimeStateStore(emptyMap())
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.blockchainsdk.loader
|
package com.tangem.blockchainsdk.providers
|
||||||
|
|
||||||
import androidx.core.util.PatternsCompat
|
import androidx.core.util.PatternsCompat
|
||||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
package com.tangem.blockchainsdk.store
|
|
||||||
|
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default implementation of RuntimeStore
|
|
||||||
*
|
|
||||||
* @param defaultValue default value
|
|
||||||
*/
|
|
||||||
internal class DefaultRuntimeStore<T>(defaultValue: T) : RuntimeStore<T> {
|
|
||||||
|
|
||||||
private val flow = MutableStateFlow(value = defaultValue)
|
|
||||||
|
|
||||||
override fun get(): StateFlow<T> = flow
|
|
||||||
|
|
||||||
override suspend fun store(value: T) {
|
|
||||||
flow.value = value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
package com.tangem.blockchainsdk.store
|
|
||||||
|
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Runtime store
|
|
||||||
*
|
|
||||||
[REDACTED_AUTHOR]
|
|
||||||
*/
|
|
||||||
internal interface RuntimeStore<T> {
|
|
||||||
|
|
||||||
/** Get flow of elements [T] */
|
|
||||||
fun get(): StateFlow<T>
|
|
||||||
|
|
||||||
/** Store [value] */
|
|
||||||
suspend fun store(value: T)
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.tangem.blockchainsdk.loader
|
package com.tangem.blockchainsdk.providers
|
||||||
|
|
||||||
import com.google.common.truth.Truth
|
import com.google.common.truth.Truth
|
||||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
Loading…
Add table
Add a link
Reference in a new issue