Updated on 2026-08-14
This commit is contained in:
parent
cd0b30eaec
commit
06876aeb1a
11 changed files with 98 additions and 92 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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://")
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue