Updated on 2026-08-14
This commit is contained in:
parent
c069df9302
commit
a3a0d325da
5 changed files with 115 additions and 4 deletions
|
|
@ -0,0 +1,27 @@
|
|||
package com.tangem.datasource.di
|
||||
|
||||
import com.squareup.moshi.Moshi
|
||||
import com.squareup.moshi.adapter
|
||||
import com.tangem.datasource.asset.AssetReader
|
||||
import com.tangem.datasource.local.testnet.DefaultTestnetTokensStorage
|
||||
import com.tangem.datasource.local.testnet.TestnetTokensStorage
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
|
||||
/**
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object TestnetTokensStorageModule {
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
@Provides
|
||||
@Singleton
|
||||
fun providesTestnetTokensStorage(assetReader: AssetReader, @SdkMoshi moshi: Moshi): TestnetTokensStorage {
|
||||
return DefaultTestnetTokensStorage(assetReader = assetReader, adapter = moshi.adapter())
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.tangem.datasource.local.testnet
|
||||
|
||||
import com.squareup.moshi.JsonAdapter
|
||||
import com.tangem.datasource.asset.AssetReader
|
||||
import com.tangem.datasource.local.testnet.models.TestnetTokensConfig
|
||||
|
||||
/**
|
||||
* Default implementation for storing testnet tokens data
|
||||
*
|
||||
* @property assetReader file reader from assets
|
||||
* @property adapter adapter for parsing testnet tokens config
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
internal class DefaultTestnetTokensStorage(
|
||||
private val assetReader: AssetReader,
|
||||
private val adapter: JsonAdapter<TestnetTokensConfig>,
|
||||
) : TestnetTokensStorage {
|
||||
|
||||
override fun getConfig(): TestnetTokensConfig {
|
||||
return requireNotNull(
|
||||
value = adapter.fromJson(
|
||||
assetReader.readJson(fileName = LOCAL_CONFIG_PATH),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
private companion object {
|
||||
const val LOCAL_CONFIG_PATH: String = "testnet_tokens"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.tangem.datasource.local.testnet
|
||||
|
||||
import com.tangem.datasource.local.testnet.models.TestnetTokensConfig
|
||||
|
||||
/**
|
||||
* Storage of testnet tokens data
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
interface TestnetTokensStorage {
|
||||
|
||||
/** Get a testnet tokens data */
|
||||
fun getConfig(): TestnetTokensConfig
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
package com.tangem.datasource.local.testnet.models
|
||||
|
||||
import com.squareup.moshi.Json
|
||||
|
||||
/**
|
||||
* Config model with testnet tokens list
|
||||
*
|
||||
* @property tokens testnet tokens list
|
||||
*/
|
||||
data class TestnetTokensConfig(
|
||||
@Json(name = "coins") val tokens: List<Token>,
|
||||
) {
|
||||
|
||||
/**
|
||||
* Testnet token model
|
||||
*
|
||||
* @property id token id
|
||||
* @property name token name
|
||||
* @property symbol token brief name. Example, "BTC"
|
||||
* @property networks networks of testnet token
|
||||
*/
|
||||
data class Token(
|
||||
@Json(name = "id") val id: String,
|
||||
@Json(name = "name") val name: String,
|
||||
@Json(name = "symbol") val symbol: String,
|
||||
@Json(name = "networks") val networks: List<Network>? = null,
|
||||
) {
|
||||
|
||||
/**
|
||||
* Network model of testnet token
|
||||
*
|
||||
* @property id network id
|
||||
* @property address network address
|
||||
* @property decimalCount decimal count
|
||||
*/
|
||||
data class Network(
|
||||
@Json(name = "networkId") val id: String,
|
||||
@Json(name = "contractAddress") val address: String?,
|
||||
@Json(name = "decimalCount") val decimalCount: Int?,
|
||||
)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue