Updated on 2026-08-14
This commit is contained in:
parent
e8af92b599
commit
5d892618a8
7 changed files with 284 additions and 42 deletions
|
|
@ -8,11 +8,13 @@ import com.tangem.blockchainsdk.accountcreator.DefaultAccountCreator
|
|||
import com.tangem.blockchainsdk.datastorage.DefaultBlockchainDataStorage
|
||||
import com.tangem.blockchainsdk.featuretoggles.DefaultBlockchainSDKFeatureToggles
|
||||
import com.tangem.blockchainsdk.providers.BlockchainProvidersTypesManager
|
||||
import com.tangem.blockchainsdk.providers.DevBlockchainProvidersTypesManager
|
||||
import com.tangem.blockchainsdk.providers.ProdBlockchainProvidersTypesManager
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
||||
import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage
|
||||
import com.tangem.datasource.local.preferences.AppPreferencesStore
|
||||
import com.tangem.libs.blockchain_sdk.BuildConfig
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
|
|
@ -43,10 +45,14 @@ internal object BlockchainSDKFactoryModule {
|
|||
@Provides
|
||||
@Singleton
|
||||
fun provideBlockchainProvidersTypesManager(
|
||||
devBlockchainProvidersTypesManager: DevBlockchainProvidersTypesManager,
|
||||
prodBlockchainProvidersTypesManager: ProdBlockchainProvidersTypesManager,
|
||||
): BlockchainProvidersTypesManager {
|
||||
// In the future, we will use different types of providers for different environments
|
||||
return prodBlockchainProvidersTypesManager
|
||||
return if (BuildConfig.DEBUG) {
|
||||
devBlockchainProvidersTypesManager
|
||||
} else {
|
||||
prodBlockchainProvidersTypesManager
|
||||
}
|
||||
}
|
||||
|
||||
@Provides
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
package com.tangem.blockchainsdk.providers
|
||||
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.blockchain.common.network.providers.ProviderType
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
import kotlin.properties.Delegates.notNull
|
||||
|
||||
/**
|
||||
* Implementation of [BlockchainProvidersTypesManager] in DEV environment
|
||||
*
|
||||
* @property prodBlockchainProvidersTypesManager prod manager
|
||||
* @property blockchainProviderTypesStore blockchain provider types store
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
@Singleton
|
||||
internal class DevBlockchainProvidersTypesManager @Inject constructor(
|
||||
private val prodBlockchainProvidersTypesManager: ProdBlockchainProvidersTypesManager,
|
||||
private val blockchainProviderTypesStore: BlockchainProviderTypesStore,
|
||||
) : BlockchainProvidersTypesManager by prodBlockchainProvidersTypesManager,
|
||||
MutableBlockchainProvidersTypesManager {
|
||||
|
||||
private var primaryResponse: BlockchainProviderTypes by notNull()
|
||||
|
||||
override suspend fun update() {
|
||||
prodBlockchainProvidersTypesManager.update()
|
||||
|
||||
primaryResponse = blockchainProviderTypesStore.get().value
|
||||
}
|
||||
|
||||
override suspend fun update(blockchain: Blockchain, providers: List<ProviderType>) {
|
||||
val currentTypes = blockchainProviderTypesStore.get().value
|
||||
|
||||
val updatedTypes = currentTypes + (blockchain to providers)
|
||||
|
||||
blockchainProviderTypesStore.store(value = updatedTypes)
|
||||
}
|
||||
|
||||
override suspend fun isMatchWithMerged(): Boolean {
|
||||
val current = blockchainProviderTypesStore.get().value
|
||||
|
||||
return current == primaryResponse
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.tangem.blockchainsdk.providers
|
||||
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.blockchain.common.network.providers.ProviderType
|
||||
|
||||
/**
|
||||
* Mutable blockchain providers types manager
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
interface MutableBlockchainProvidersTypesManager : BlockchainProvidersTypesManager {
|
||||
|
||||
/** Update [providers] for [blockchain] */
|
||||
suspend fun update(blockchain: Blockchain, providers: List<ProviderType>)
|
||||
|
||||
/** Checks that current [BlockchainProviderTypes] was changed */
|
||||
suspend fun isMatchWithMerged(): Boolean
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue