Updated on 2026-08-14

This commit is contained in:
Tangem 2024-09-28 19:28:50 +04:00
parent cd0b30eaec
commit 06876aeb1a
11 changed files with 98 additions and 92 deletions

View file

@ -7,7 +7,7 @@ import com.tangem.blockchainsdk.converters.BlockchainProviderTypesConverter
import com.tangem.blockchainsdk.loader.BlockchainProvidersResponseLoader
import com.tangem.blockchainsdk.store.RuntimeStore
import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage
import com.tangem.datasource.local.config.environment.models.ProviderModel
import com.tangem.datasource.local.config.providers.models.ProviderModel
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.coroutineScope

View file

@ -6,7 +6,7 @@ import com.tangem.blockchainsdk.BlockchainProviderTypes
import com.tangem.blockchainsdk.BlockchainProvidersResponse
import com.tangem.blockchainsdk.utils.createPrivateProviderType
import com.tangem.blockchainsdk.utils.fromNetworkId
import com.tangem.datasource.local.config.environment.models.ProviderModel
import com.tangem.datasource.local.config.providers.models.ProviderModel
import com.tangem.utils.converter.Converter
import timber.log.Timber

View file

@ -5,8 +5,8 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.tangem.blockchainsdk.BlockchainProvidersResponse
import com.tangem.blockchainsdk.utils.createPrivateProviderType
import com.tangem.datasource.api.tangemTech.TangemTechApi
import com.tangem.datasource.asset.loader.AssetLoader
import com.tangem.datasource.local.config.environment.models.ProviderModel
import com.tangem.datasource.local.config.providers.BlockchainProvidersStorage
import com.tangem.datasource.local.config.providers.models.ProviderModel
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import com.tangem.utils.coroutines.runCatching
import timber.log.Timber
@ -16,16 +16,16 @@ import javax.inject.Singleton
/**
* Loader of [BlockchainProvidersResponse]
*
* @property tangemTechServiceApi tangem tech api
* @property assetLoader asset loader for local config loading
* @property dispatchers dispatchers
* @property tangemTechServiceApi tangem tech api
* @property blockchainProvidersStorage blockchain providers storage
* @property dispatchers dispatchers
*
[REDACTED_AUTHOR]
*/
@Singleton
internal class BlockchainProvidersResponseLoader @Inject constructor(
private val tangemTechServiceApi: TangemTechApi,
private val assetLoader: AssetLoader,
private val blockchainProvidersStorage: BlockchainProvidersStorage,
private val dispatchers: CoroutineDispatcherProvider,
) {
@ -33,7 +33,7 @@ internal class BlockchainProvidersResponseLoader @Inject constructor(
/** Load [BlockchainProvidersResponse] */
suspend fun load(): BlockchainProvidersResponse? {
val localResponse = loadLocal() ?: return null
val localResponse = loadLocal().ifEmpty { return null }
return runCatching(dispatcher = dispatchers.io, block = ::loadRemote)
.fold(
@ -45,9 +45,7 @@ internal class BlockchainProvidersResponseLoader @Inject constructor(
)
}
private suspend fun loadLocal(): BlockchainProvidersResponse? {
return assetLoader.load<BlockchainProvidersResponse>(fileName = PROVIDER_TYPES_FILE_NAME)
}
private suspend fun loadLocal(): BlockchainProvidersResponse = blockchainProvidersStorage.getConfigSync()
private suspend fun loadRemote() = tangemTechServiceApi.getBlockchainProviders()
@ -140,8 +138,6 @@ internal class BlockchainProvidersResponseLoader @Inject constructor(
}
private companion object {
const val PROVIDER_TYPES_FILE_NAME = "tangem-app-config/providers_order"
val forbiddenSchemes = listOf("wss://")
}
}