From a3a0d325da7b96ec2fcca19fdc4e4330404e537e Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 10 Apr 2023 21:23:27 +0900 Subject: [PATCH] Updated on 2026-08-14 --- app/src/main/assets/testnet_tokens.json | 5 +-- .../di/TestnetTokensStorageModule.kt | 27 ++++++++++++ .../testnet/DefaultTestnetTokensStorage.kt | 31 ++++++++++++++ .../local/testnet/TestnetTokensStorage.kt | 14 +++++++ .../testnet/models/TestnetTokensConfig.kt | 42 +++++++++++++++++++ 5 files changed, 115 insertions(+), 4 deletions(-) create mode 100644 core/datasource/src/main/java/com/tangem/datasource/di/TestnetTokensStorageModule.kt create mode 100644 core/datasource/src/main/java/com/tangem/datasource/local/testnet/DefaultTestnetTokensStorage.kt create mode 100644 core/datasource/src/main/java/com/tangem/datasource/local/testnet/TestnetTokensStorage.kt create mode 100644 core/datasource/src/main/java/com/tangem/datasource/local/testnet/models/TestnetTokensConfig.kt diff --git a/app/src/main/assets/testnet_tokens.json b/app/src/main/assets/testnet_tokens.json index f1f1b8ce59..8b227fde97 100644 --- a/app/src/main/assets/testnet_tokens.json +++ b/app/src/main/assets/testnet_tokens.json @@ -463,8 +463,5 @@ } ] } - ], - - "total" : 0, - "imageHost" : "https://s3.eu-central-1.amazonaws.com/tangem.api/coins/" + ] } diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/TestnetTokensStorageModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/TestnetTokensStorageModule.kt new file mode 100644 index 0000000000..229722e50d --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/di/TestnetTokensStorageModule.kt @@ -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()) + } +} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/testnet/DefaultTestnetTokensStorage.kt b/core/datasource/src/main/java/com/tangem/datasource/local/testnet/DefaultTestnetTokensStorage.kt new file mode 100644 index 0000000000..d4a3a066e1 --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/local/testnet/DefaultTestnetTokensStorage.kt @@ -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, +) : 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" + } +} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/testnet/TestnetTokensStorage.kt b/core/datasource/src/main/java/com/tangem/datasource/local/testnet/TestnetTokensStorage.kt new file mode 100644 index 0000000000..7f091e98e6 --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/local/testnet/TestnetTokensStorage.kt @@ -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 +} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/testnet/models/TestnetTokensConfig.kt b/core/datasource/src/main/java/com/tangem/datasource/local/testnet/models/TestnetTokensConfig.kt new file mode 100644 index 0000000000..1e619014cf --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/local/testnet/models/TestnetTokensConfig.kt @@ -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, +) { + + /** + * 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? = 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?, + ) + } +} \ No newline at end of file