Updated on 2026-08-14
This commit is contained in:
parent
5ae666646f
commit
7834cc5a87
8 changed files with 79 additions and 27 deletions
|
|
@ -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.issuers.DefaultIssuersConfigStorage
|
||||
import com.tangem.datasource.local.config.issuers.IssuersConfigStorage
|
||||
import com.tangem.datasource.local.config.providers.BlockchainProvidersStorage
|
||||
import com.tangem.datasource.local.config.providers.DefaultBlockchainProvidersStorage
|
||||
import com.tangem.datasource.local.config.testnet.DefaultTestnetTokensStorage
|
||||
|
|
@ -30,7 +32,7 @@ internal object ConfigModule {
|
|||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun providesTestnetTokensStorage(assetLoader: AssetLoader): TestnetTokensStorage {
|
||||
fun provideTestnetTokensStorage(assetLoader: AssetLoader): TestnetTokensStorage {
|
||||
return DefaultTestnetTokensStorage(assetLoader)
|
||||
}
|
||||
|
||||
|
|
@ -42,4 +44,13 @@ internal object ConfigModule {
|
|||
runtimeStateStore = RuntimeStateStore(defaultValue = emptyMap()),
|
||||
)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideIssuersConfigStorage(assetLoader: AssetLoader): IssuersConfigStorage {
|
||||
return DefaultIssuersConfigStorage(
|
||||
assetLoader = assetLoader,
|
||||
runtimeStateStore = RuntimeStateStore(defaultValue = emptyList()),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package com.tangem.datasource.local.config.issuers
|
||||
|
||||
import com.tangem.datasource.asset.loader.AssetLoader
|
||||
import com.tangem.datasource.local.config.issuers.models.Issuer
|
||||
import com.tangem.datasource.local.datastore.RuntimeStateStore
|
||||
|
||||
internal class DefaultIssuersConfigStorage(
|
||||
private val assetLoader: AssetLoader,
|
||||
private val runtimeStateStore: RuntimeStateStore<List<Issuer>>,
|
||||
) : IssuersConfigStorage {
|
||||
|
||||
override suspend fun getConfig(): List<Issuer> {
|
||||
val cachedData = runtimeStateStore.get().value
|
||||
|
||||
if (cachedData.isNotEmpty()) return cachedData
|
||||
|
||||
val issuers = assetLoader.loadList<Issuer>(fileName = ISSUERS_FILE_NAME)
|
||||
|
||||
runtimeStateStore.store(value = issuers)
|
||||
|
||||
return issuers
|
||||
}
|
||||
|
||||
private companion object {
|
||||
const val ISSUERS_FILE_NAME = "tangem-app-config/issuers"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.tangem.datasource.local.config.issuers
|
||||
|
||||
import com.tangem.datasource.local.config.issuers.models.Issuer
|
||||
|
||||
/**
|
||||
* Storage for list of Twins [Issuer]
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
interface IssuersConfigStorage {
|
||||
|
||||
/** Get config */
|
||||
suspend fun getConfig(): List<Issuer>
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package com.tangem.datasource.local.config.issuers.models
|
||||
|
||||
import com.squareup.moshi.Json
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
||||
@JsonClass(generateAdapter = true)
|
||||
data class Issuer(
|
||||
@Json(name = "privateKey") val privateKey: String,
|
||||
@Json(name = "publicKey") val publicKey: String,
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue