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

@ -4,7 +4,7 @@ import com.tangem.datasource.api.common.response.ApiResponse
import com.tangem.datasource.api.promotion.models.PromotionInfoResponse
import com.tangem.datasource.api.tangemTech.models.*
import com.tangem.datasource.api.utils.ReadTimeout
import com.tangem.datasource.local.config.environment.models.ProviderModel
import com.tangem.datasource.local.config.providers.models.ProviderModel
import retrofit2.http.*
import java.util.concurrent.TimeUnit

View file

@ -8,7 +8,7 @@ import com.tangem.datasource.api.common.adapter.BigDecimalAdapter
import com.tangem.datasource.api.common.adapter.DateTimeAdapter
import com.tangem.datasource.api.common.adapter.LocalDateAdapter
import com.tangem.datasource.api.common.adapter.addStakeKitEnumFallbackAdapters
import com.tangem.datasource.local.config.environment.models.ProviderModel
import com.tangem.datasource.local.config.providers.models.ProviderModel
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn

View file

@ -4,6 +4,8 @@ import com.tangem.datasource.asset.loader.AssetLoader
import com.tangem.datasource.local.config.environment.DefaultEnvironmentConfigStorage
import com.tangem.datasource.local.config.environment.EnvironmentConfig
import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage
import com.tangem.datasource.local.config.providers.BlockchainProvidersStorage
import com.tangem.datasource.local.config.providers.DefaultBlockchainProvidersStorage
import com.tangem.datasource.local.config.testnet.DefaultTestnetTokensStorage
import com.tangem.datasource.local.config.testnet.TestnetTokensStorage
import com.tangem.datasource.local.datastore.RuntimeStateStore
@ -31,4 +33,13 @@ internal object ConfigModule {
fun providesTestnetTokensStorage(assetLoader: AssetLoader): TestnetTokensStorage {
return DefaultTestnetTokensStorage(assetLoader)
}
@Provides
@Singleton
fun provideProvidersOrderConfigStorage(assetLoader: AssetLoader): BlockchainProvidersStorage {
return DefaultBlockchainProvidersStorage(
assetLoader = assetLoader,
runtimeStateStore = RuntimeStateStore(defaultValue = emptyMap()),
)
}
}

View file

@ -0,0 +1,14 @@
package com.tangem.datasource.local.config.providers
import com.tangem.datasource.local.config.providers.models.ProviderModel
/**
* Blockchain providers storage
*
[REDACTED_AUTHOR]
*/
interface BlockchainProvidersStorage {
/** Get config */
suspend fun getConfigSync(): Map<String, List<ProviderModel>>
}

View file

@ -0,0 +1,33 @@
package com.tangem.datasource.local.config.providers
import com.tangem.datasource.asset.loader.AssetLoader
import com.tangem.datasource.local.config.providers.models.ProviderModel
import com.tangem.datasource.local.datastore.RuntimeStateStore
/**
* Default blockchain providers storage
*
* @property assetLoader asset loader
* @property runtimeStateStore runtime state store
*/
internal class DefaultBlockchainProvidersStorage(
private val assetLoader: AssetLoader,
private val runtimeStateStore: RuntimeStateStore<Map<String, List<ProviderModel>>>,
) : BlockchainProvidersStorage {
override suspend fun getConfigSync(): Map<String, List<ProviderModel>> {
val cachedData = runtimeStateStore.get().value
if (cachedData.isNotEmpty()) return cachedData
val config = assetLoader.load<Map<String, List<ProviderModel>>>(fileName = PROVIDER_TYPES_FILE_NAME).orEmpty()
runtimeStateStore.store(value = config)
return config
}
private companion object {
const val PROVIDER_TYPES_FILE_NAME = "tangem-app-config/providers_order"
}
}

View file

@ -1,4 +1,4 @@
package com.tangem.datasource.local.config.environment.models
package com.tangem.datasource.local.config.providers.models
import com.squareup.moshi.Json