diff --git a/app/src/main/assets/tangem-app-config b/app/src/main/assets/tangem-app-config
index 4a1be08512..a13406537e 160000
--- a/app/src/main/assets/tangem-app-config
+++ b/app/src/main/assets/tangem-app-config
@@ -1 +1 @@
-Subproject commit 4a1be08512fe2b45504f2bdaa0e35f5c11e11319
+Subproject commit a13406537ec4b05f930131b151ea6ebb1c0b5ca3
diff --git a/app/src/main/assets/testnet_tokens.json b/app/src/main/assets/testnet_tokens.json
index ada88c6bc7..6c19252e4f 100644
--- a/app/src/main/assets/testnet_tokens.json
+++ b/app/src/main/assets/testnet_tokens.json
@@ -434,6 +434,16 @@
}
]
},
+ {
+ "id" : "algorand",
+ "symbol" : "ALGO",
+ "name" : "Algorand",
+ "networks" : [
+ {
+ "networkId" : "algorand/test"
+ }
+ ]
+ },
{
"id" : "arbitrum-one",
"symbol" : "ETH",
diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt b/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt
index ed2d89b8d2..c09740d22f 100644
--- a/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt
+++ b/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt
@@ -145,6 +145,7 @@ internal class ConfigManagerImpl @Inject constructor() : ConfigManager {
jsonRpc = accessTokens.bitcoin?.jsonRPC,
blockBookRest = accessTokens.bitcoin?.blockBookRest,
),
+ algorand = GetBlockAccessToken(rest = accessTokens.algorand?.rest),
)
}
}
diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt b/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt
index ec2d4845ad..f0b1403825 100644
--- a/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt
+++ b/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt
@@ -66,6 +66,7 @@ data class GetBlockAccessTokens(
@Json(name = "litecoin") val litecoin: GetBlockToken?,
@Json(name = "dash") val dash: GetBlockToken?,
@Json(name = "bitcoin") val bitcoin: GetBlockToken?,
+ @Json(name = "algorand") val algorand: GetBlockToken?,
)
@JsonClass(generateAdapter = true)
diff --git a/core/ui/src/main/java/com/tangem/core/ui/extensions/BlockchainIcons.kt b/core/ui/src/main/java/com/tangem/core/ui/extensions/BlockchainIcons.kt
index 33e08b6314..1f3cc0f7dc 100644
--- a/core/ui/src/main/java/com/tangem/core/ui/extensions/BlockchainIcons.kt
+++ b/core/ui/src/main/java/com/tangem/core/ui/extensions/BlockchainIcons.kt
@@ -50,6 +50,7 @@ fun getActiveIconRes(blockchainId: String): Int {
"vechain", "vechain/test" -> R.drawable.img_vechain_22
"aptos", "aptos/test" -> R.drawable.img_aptos_22
"shibarium", "shibarium/test" -> R.drawable.img_shibarium_22
+ "algorand", "algorand/test" -> R.drawable.img_algorand_22
else -> R.drawable.ic_alert_24
}
}
@@ -101,6 +102,7 @@ fun getActiveIconResByNetworkId(networkId: String): Int {
"vechain", "vechain/test" -> R.drawable.img_vechain_22
"aptos", "aptos/test" -> R.drawable.img_aptos_22
"shibarium", "shibarium/test" -> R.drawable.img_shibarium_22
+ "algorand", "algorand/test" -> R.drawable.img_algorand_22
else -> R.drawable.ic_alert_24
}
}
@@ -149,6 +151,7 @@ fun getActiveIconResByCoinId(coinId: String): Int {
"vechain" -> R.drawable.img_vechain_22
"aptos" -> R.drawable.img_aptos_22
"shibarium" -> R.drawable.img_shibarium_22
+ "algorand" -> R.drawable.img_algorand_22
else -> R.drawable.ic_alert_24
}
}
@@ -200,6 +203,7 @@ fun getGreyedOutIconRes(blockchainId: String): Int {
"vechain", "vechain/test" -> R.drawable.ic_vechain_22
"aptos", "aptos/test" -> R.drawable.ic_aptos_22
"shibarium", "shibarium/test" -> R.drawable.ic_shibarium_22
+ "algorand", "algorand/test" -> R.drawable.ic_algorand_22
else -> R.drawable.ic_alert_24
}
}
@@ -251,6 +255,7 @@ fun getGreyedOutIconResByNetworkId(networkId: String): Int {
"vechain", "vechain/test" -> R.drawable.ic_vechain_22
"aptos", "aptos/test" -> R.drawable.ic_aptos_22
"shibarium", "shibarium/test" -> R.drawable.ic_shibarium_22
+ "algorand", "algorand/test" -> R.drawable.ic_algorand_22
else -> R.drawable.ic_alert_24
}
}
\ No newline at end of file
diff --git a/core/ui/src/main/res/drawable/ic_algorand_22.xml b/core/ui/src/main/res/drawable/ic_algorand_22.xml
new file mode 100644
index 0000000000..770f3c6096
--- /dev/null
+++ b/core/ui/src/main/res/drawable/ic_algorand_22.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/core/ui/src/main/res/drawable/img_algorand_22.xml b/core/ui/src/main/res/drawable/img_algorand_22.xml
new file mode 100644
index 0000000000..3298f10b19
--- /dev/null
+++ b/core/ui/src/main/res/drawable/img_algorand_22.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/domain/legacy/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt b/domain/legacy/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt
index 95ba582d02..2c273db0de 100644
--- a/domain/legacy/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt
+++ b/domain/legacy/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt
@@ -80,9 +80,11 @@ fun Blockchain.Companion.fromNetworkId(networkId: String): Blockchain? {
"vechain/test" -> Blockchain.VeChainTestnet
"aptos" -> Blockchain.Aptos
"aptos/test" -> Blockchain.AptosTestnet
+ "" -> Blockchain.Playa3ull // FIXME
"shibarium" -> Blockchain.Shibarium
"shibarium/test" -> Blockchain.ShibariumTestnet
- "" -> Blockchain.Playa3ull // FIXME
+ "algorand" -> Blockchain.Algorand
+ "algorand/test" -> Blockchain.AlgorandTestnet
else -> null
}
}
@@ -164,9 +166,11 @@ fun Blockchain.toNetworkId(): String {
Blockchain.VeChainTestnet -> "vechain/test"
Blockchain.Aptos -> "aptos"
Blockchain.AptosTestnet -> "aptos/test"
+ Blockchain.Playa3ull -> "" // FIXME
Blockchain.Shibarium -> "shibarium"
Blockchain.ShibariumTestnet -> "shibarium/test"
- Blockchain.Playa3ull -> "" // FIXME
+ Blockchain.Algorand -> "algorand"
+ Blockchain.AlgorandTestnet -> "algorand/test"
}
}
@@ -218,10 +222,12 @@ fun Blockchain.toCoinId(): String {
Blockchain.VeChain, Blockchain.VeChainTestnet -> "vechain"
Blockchain.Aptos -> "aptos"
Blockchain.AptosTestnet -> "aptos/test"
- Blockchain.Unknown -> "unknown"
+ Blockchain.Playa3ull -> "" // FIXME
Blockchain.Shibarium -> "bone-shibaswap"
Blockchain.ShibariumTestnet -> "bone-shibaswap/test"
- Blockchain.Playa3ull -> "" // FIXME
+ Blockchain.Algorand -> "algorand"
+ Blockchain.AlgorandTestnet -> "algorand/test"
+ Blockchain.Unknown -> "unknown"
}
}
diff --git a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt
index a040c7db7d..c5792124c9 100644
--- a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt
+++ b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt
@@ -276,7 +276,11 @@ class DefaultWalletManagersFacade(
resultFactory.getResult(walletManager)
} catch (e: BlockchainSdkError.AccountNotFound) {
- resultFactory.getNoAccountResult(walletManager = walletManager, customMessage = e.customMessage)
+ resultFactory.getNoAccountResult(
+ walletManager = walletManager,
+ customMessage = e.customMessage,
+ amountToCreateAccount = e.amountToCreateAccount,
+ )
} catch (e: Throwable) {
Timber.w(e, "Unable to update a wallet manager for: ${walletManager.wallet.blockchain}")
@@ -288,7 +292,11 @@ class DefaultWalletManagersFacade(
return try {
resultFactory.getResult(walletManager)
} catch (e: BlockchainSdkError.AccountNotFound) {
- resultFactory.getNoAccountResult(walletManager = walletManager, customMessage = e.customMessage)
+ resultFactory.getNoAccountResult(
+ walletManager = walletManager,
+ customMessage = e.customMessage,
+ amountToCreateAccount = e.amountToCreateAccount,
+ )
} catch (e: Throwable) {
Timber.w(e, "Unable to update a wallet manager for: ${walletManager.wallet.blockchain}")
diff --git a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/UpdateWalletManagerResultFactory.kt b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/UpdateWalletManagerResultFactory.kt
index dbcc2c7ff5..6b88794b4b 100644
--- a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/UpdateWalletManagerResultFactory.kt
+++ b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/UpdateWalletManagerResultFactory.kt
@@ -40,13 +40,17 @@ internal class UpdateWalletManagerResultFactory {
)
}
- fun getNoAccountResult(walletManager: WalletManager, customMessage: String): UpdateWalletManagerResult {
+ fun getNoAccountResult(
+ walletManager: WalletManager,
+ customMessage: String,
+ amountToCreateAccount: BigDecimal?,
+ ): UpdateWalletManagerResult {
val wallet = walletManager.wallet
val blockchain = wallet.blockchain
val firstWalletToken = wallet.getTokens().firstOrNull()
- val amountToCreateAccount = blockchain.amountToCreateAccount(firstWalletToken)
+ val amount = amountToCreateAccount ?: blockchain.amountToCreateAccount(firstWalletToken)
- return if (amountToCreateAccount == null) {
+ return if (amount == null) {
Timber.w("Unable to get required amount to create account for: $blockchain")
UpdateWalletManagerResult.Unreachable(
selectedAddress = wallet.address,
@@ -56,7 +60,7 @@ internal class UpdateWalletManagerResultFactory {
UpdateWalletManagerResult.NoAccount(
selectedAddress = wallet.address,
addresses = getAvailableAddresses(wallet.addresses),
- amountToCreateAccount = amountToCreateAccount,
+ amountToCreateAccount = amount,
errorMessage = customMessage,
)
}
diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml
index 297f61b088..ac9b9b657c 100644
--- a/gradle/dependencies.toml
+++ b/gradle/dependencies.toml
@@ -85,7 +85,7 @@ web3j = "4.10.1"
# endregion Other libraries
# region Tangem
-tangemBlockchainSdk = "develop-482"
+tangemBlockchainSdk = "develop-483"
#tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds
tangemCardSdk = "develop-324"
#tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^