From 43ec5e7e46f5aa4eea5018c999a9c421fad66d69 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 13 Mar 2025 17:46:34 +0300 Subject: [PATCH 1/6] Updated on 2026-08-14 --- gradle/tangem_dependencies.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index 85cc22e54e..c191bacee5 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -1,7 +1,7 @@ [versions] -tangemBlockchainSdk = "release-app_5.21-980" +tangemBlockchainSdk = "release-app_5.22-982" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "release-app_5.21-438" +tangemCardSdk = "release-app_5.22-440" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem-developments8" #tangemVico = "0.0.1" # Keep it! - used for local builds ^ From 82d2b4c9d74613aa1dd1a75866474964e0d02932 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 13 Mar 2025 17:47:19 +0300 Subject: [PATCH 2/6] Updated on 2026-08-14 --- gradle/tangem_dependencies.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index c191bacee5..85cc22e54e 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -1,7 +1,7 @@ [versions] -tangemBlockchainSdk = "release-app_5.22-982" +tangemBlockchainSdk = "release-app_5.21-980" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "release-app_5.22-440" +tangemCardSdk = "release-app_5.21-438" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem-developments8" #tangemVico = "0.0.1" # Keep it! - used for local builds ^ From 7afabe2356324975848f54fedbb8b65719f19e72 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 13 Mar 2025 17:48:15 +0300 Subject: [PATCH 3/6] Updated on 2026-08-14 --- gradle/tangem_dependencies.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index 7b378fad02..c191bacee5 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -1,7 +1,7 @@ [versions] -tangemBlockchainSdk = "develop-977" +tangemBlockchainSdk = "release-app_5.22-982" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "develop-439" +tangemCardSdk = "release-app_5.22-440" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem-developments8" #tangemVico = "0.0.1" # Keep it! - used for local builds ^ From 693c64e1d85aca0e72d87565c667fe1147cc61c9 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 13 Mar 2025 17:51:45 +0300 Subject: [PATCH 4/6] Updated on 2026-08-14 --- .../src/main/assets/configs/feature_toggles_config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/config-toggles/src/main/assets/configs/feature_toggles_config.json b/core/config-toggles/src/main/assets/configs/feature_toggles_config.json index 20a7e31c0b..67b61d21e3 100644 --- a/core/config-toggles/src/main/assets/configs/feature_toggles_config.json +++ b/core/config-toggles/src/main/assets/configs/feature_toggles_config.json @@ -57,11 +57,11 @@ }, { "name": "TX_HISTORY_REFACTORING_ENABLED", - "version": "undefined" + "version": "5.22.0" }, { "name": "ASK_BIOMETRY_REFACTORING_ENABLED", - "version": "undefined" + "version": "5.22.0" }, { "name": "NOTE_REFACTORING_ENABLED", From c6ce899e8f43efb42cd7dbb45be64ecaf78efc20 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 13 Mar 2025 18:43:33 +0300 Subject: [PATCH 5/6] Updated on 2026-08-14 --- .../tangemTech/models/UserTokensResponse.kt | 2 ++ .../data/tokens/utils/CustomTokensMerger.kt | 26 ++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/UserTokensResponse.kt b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/UserTokensResponse.kt index 46432b2d8c..80e222a51b 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/UserTokensResponse.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/UserTokensResponse.kt @@ -25,6 +25,8 @@ data class UserTokensResponse( override fun equals(other: Any?): Boolean { val otherToken = other as? Token ?: return false + // use only this fields is enough and correct to compare, don't add id or smth + // to avoid duplicates for tokens on main screen return otherToken.contractAddress == this.contractAddress && otherToken.networkId == this.networkId && otherToken.derivationPath == this.derivationPath && diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/CustomTokensMerger.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/CustomTokensMerger.kt index dae6959b59..da22162e0a 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/CustomTokensMerger.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/CustomTokensMerger.kt @@ -1,5 +1,6 @@ package com.tangem.data.tokens.utils +import arrow.atomic.AtomicBoolean import com.tangem.data.common.api.safeApiCall import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.api.tangemTech.models.UserTokensResponse @@ -31,31 +32,44 @@ internal class CustomTokensMerger( * @return A potentially updated UserTokensResponse, with custom tokens merged if necessary. */ suspend fun mergeIfPresented(userWalletId: UserWalletId, response: UserTokensResponse): UserTokensResponse { + // use flag to check: we can't compare two token list after merge because Token equals don't include some fields + val wasMerged = AtomicBoolean(false) + val mergedTokens = withContext(dispatchers.default) { response.tokens .map { token -> - async { mergeIfPresented(token) } + async { mergeIfPresented(token, wasMerged) } } .awaitAll() } val updatedResponse = response.copy(tokens = mergedTokens) - if (response.tokens != updatedResponse.tokens) { + // previously here was used compare response.tokens, but it's not working correctly + // because Token.equals() skip some fields + if (wasMerged.value) { pushTokens(userWalletId, updatedResponse) } return updatedResponse } - private suspend fun mergeIfPresented(token: UserTokensResponse.Token): UserTokensResponse.Token { + private suspend fun mergeIfPresented( + token: UserTokensResponse.Token, + wasMerged: AtomicBoolean, + ): UserTokensResponse.Token { if (isCoinOrNonCustomToken(token)) return token - return merge(token) + return merge(token, wasMerged) } - private suspend fun merge(customToken: UserTokensResponse.Token): UserTokensResponse.Token { + private suspend fun merge( + customToken: UserTokensResponse.Token, + wasMerged: AtomicBoolean, + ): UserTokensResponse.Token { val foundToken = fetchToken(customToken) - + if (foundToken != null) { + wasMerged.set(true) + } return foundToken ?: customToken } From 342ca3b53025e061dacd26e014aff1e18e76d479 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 14 Mar 2025 13:30:00 +0000 Subject: [PATCH 6/6] Updated on 2026-08-14 --- gradle/tangem_dependencies.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index c191bacee5..7b378fad02 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -1,7 +1,7 @@ [versions] -tangemBlockchainSdk = "release-app_5.22-982" +tangemBlockchainSdk = "develop-977" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "release-app_5.22-440" +tangemCardSdk = "develop-439" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem-developments8" #tangemVico = "0.0.1" # Keep it! - used for local builds ^