diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt index 075ca14999..b006532804 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt @@ -19,8 +19,8 @@ import com.tangem.domain.models.scan.CardDTO.Companion.RING_BATCH_IDS import com.tangem.domain.models.scan.CardDTO.Companion.RING_BATCH_PREFIX import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.wallets.builder.UserWalletBuilder -import com.tangem.domain.wallets.legacy.UserWalletsListManager import com.tangem.domain.wallets.builder.UserWalletIdBuilder +import com.tangem.domain.wallets.legacy.UserWalletsListManager import com.tangem.domain.wallets.models.Artwork import com.tangem.domain.wallets.models.UserWallet import com.tangem.feature.onboarding.data.model.CreateWalletResponse @@ -641,6 +641,8 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction) ) } } else { + delay(HIDE_PROGRESS_DELAY) + readCard { newScanResponse -> scanResponse = newScanResponse userWallet = createUserWallet(newScanResponse, backupState) diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index 51282f72a9..91ac04b5bf 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -308,7 +308,7 @@ Unbegrenzt Karte oder Ring bestellen Karte oder Ring scannen - Diese Informationen wurden mithilfe von KI generiert. \n Tippe hier, wenn Du Fehler finden. + Diese Informationen wurden mithilfe von KI generiert.\n Tippe hier, wenn Du Fehler finden. Um den Zugangscode zu ändern, halte die Karte oder Ring wie oben gezeigt an das Gerät und entferne sie erst am Ende des Vorgangs. Um den Passcode zu ändern, halte die Karte oder Ring wie oben gezeigt an das Gerät und entferne sie erst am Ende des Vorgangs. Um die Wallet zu erstellen, halte die Karte oder Ring wie oben gezeigt an das Gerät und entferne sie erst am Ende des Vorgangs. @@ -391,8 +391,8 @@ Beliebt Über %s - %d Börse - %d Börsen + %d börse + %d börsen Bewertung, basierend auf %d diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index 58676a38b9..ca139eb0a7 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -308,7 +308,7 @@ Ilimitado Ordenar Escanee - Esta información fue generada con IA + Esta información fue generada con IA.\nPulse aquí si encuentra algún error. Toque para cambiar la contraseña Toque para cambiar la contraseña Para crear la billetera, toque la tarjeta como se muestra arriba y no la retire hasta el final de la operación @@ -391,8 +391,8 @@ Tendencias Acerca de %s - intercambio - intercambios + %d intercambio + %d intercambios Basado en %d evaluación @@ -882,6 +882,7 @@ Solicitud para crear una transacción para %1$s\n%2$s\n\nMontante: %3$s\nComisión: %4$s\nTotal: %5$s\nSaldo: %6$s No se puede completar la transacción. Fondos insuficientes. Error al establecer la sesión de WalletConnect. Por favor, inténtelo más tarde. + No todos los tokens se han agregado a su lista. Añádelos primero y vuelve a intentarlo. Tokens faltantes :\n Error al firmar el mensaje.\nPor favor, inténtalo de nuevo Error al establecer la sesión de WalletConnect: error de tiempo de espera. Por favor, inténtelo más tarde. La solicitud de sesión contiene blockchains no compatibles para la conexión WalletConnect. Blockchains no compatibles:\n diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index c01b0abd75..23a43e7ff8 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -308,7 +308,7 @@ Illimité Commandez Scannez - Ces informations ont été générées avec l\'IA + Ces informations ont été générées avec l\'IA.\nAppuyez ici si vous trouvez des erreurs. Touchez, pour modifier le code d\'accès Touchez, pour modifier le mot de passe Pour créer le portefeuille, appuyez sur la carte comme indiqué ci-dessus et ne la retirez pas jusqu\'à la fin de l\'opération @@ -391,8 +391,8 @@ Tendances À propos de %s - échange - échanges + %d échange + %d échanges Basé sur %d évaluation @@ -882,6 +882,7 @@ Demande de création d\'une transaction pour %1$s\n%2$s\n\nMontant : %3$s\nFrais : %4$s\nTotal : %5$s\nSolde : %6$s Impossible d\'effectuer la transaction. Fonds insuffisants. Échec de l\'établissement de la session WalletConnect. Veuillez réessayer plus tard. + Tous les jetons n\'ont pas été ajoutés à votre liste. Veuillez d\'abord les ajouter et essayez à nouveau. Jetons manquants :\n Échec de la signature du message. Veuillez réessayer Échec de l\'établissement de la session WalletConnect : erreur de délai d\'attente. Veuillez réessayer plus tard. La demande de session contient des blockchains non prises en charge pour la connexion WalletConnect. Blockchains non prises en charge :\n diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index 034ee6ecc4..9daec072f7 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -82,10 +82,12 @@ %1$sへ移動 カメラへのアクセスを許可していません。プライバシー設定を調整してください。 キャンセル + 変更 アクションを選択 請求 報酬を受け取る 閉じる + 確認 続ける コピー アドレスをコピー @@ -542,6 +544,9 @@ アクセスコードの復元 同一のカード アクセスコード + この国では当社のサービスはご利用いただけません + 変更または確認 + あなたの住居は次のように識別されています グループ 残高順 トークンを整理する @@ -746,7 +751,7 @@ %sごと 毎日 %s日ごと - 毎%1$s + エポック毎 時代毎 毎時間 @@ -872,6 +877,7 @@ %1$sの取引を作成するリクエスト\n%2$s\n\n金額: %3$s\n手数料: %4$s\n合計: %5$s\n残高: %6$s 取引を送信できません。資金が足りません。 WalletConnect セッションを確立できませんでした。しばらくしてからもう一度お試しください。 + すべてのトークンがリストには追加されませんでした。まず追加してから、もう一度お試しください。不足しているトークン: \n メッセージの署名に失敗しました。\nもう一度お試しください。 WalletConnectセッションの確立に失敗しました:タイムアウトエラー。しばらくしてもう一度お試しください。 セッションリクエストには、WalletConnect接続でサポートされていないブロックチェーンが含まれています。サポートされていないブロックチェーン: \n diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index 3e346d67a4..1d7f48e667 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -89,6 +89,7 @@ Получить Вывести награду Закрыть + Подтвердить Продолжить Копировать Скопировать адрес @@ -518,7 +519,7 @@ Ваша seed-фраза - %d слово + %d слова %d слов %d слов diff --git a/core/res/src/main/res/values-uk-rUA/strings.xml b/core/res/src/main/res/values-uk-rUA/strings.xml index 520382b7eb..c7e208ecb6 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -519,7 +519,7 @@ Ваша seed-фраза - %d слово + %d слова %d слів %d слів diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index ff9ddc76d8..7bb68fb3cf 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -83,10 +83,12 @@ Go to %1$s You have not given access to your camera, please adjust your privacy settings Cancel + Change Choose action Claim Claim rewards Close + Confirm Continue Copy Copy address @@ -550,6 +552,9 @@ Access code restore Identical cards Access code + Our services are not available in this country + Change or confirm it + Your residence has been identified as Group By balance Organize tokens diff --git a/domain/staking/src/main/java/com/tangem/domain/staking/InvalidatePendingTransactionsUseCase.kt b/domain/staking/src/main/java/com/tangem/domain/staking/InvalidatePendingTransactionsUseCase.kt index 6dd0f53745..2c07ae8ea0 100644 --- a/domain/staking/src/main/java/com/tangem/domain/staking/InvalidatePendingTransactionsUseCase.kt +++ b/domain/staking/src/main/java/com/tangem/domain/staking/InvalidatePendingTransactionsUseCase.kt @@ -42,7 +42,8 @@ class InvalidatePendingTransactionsUseCase( newBalancesId: Int, pendingData: List>, ): Pair, List> { - val balances = realData.associateBy { BalanceIdentity(it.groupId, it.type, it.amount, it.date) } + val balances = realData.groupBy { BalanceIdentity(it.groupId, it.type, it.amount, it.date) } + .mapValues { it.value.toMutableList() } .toMutableMap() val transactionsToRemove = mutableListOf() @@ -56,28 +57,34 @@ class InvalidatePendingTransactionsUseCase( transactionsToRemove.add(pendingTransaction) } balances.containsKey(key) -> { - balances[key] = balanceItem + val removed = balances[key]?.removeIf { !it.isPending } ?: false + if (removed) { + balances[key]?.add(balanceItem) + } } else -> { val groupId = UUID.randomUUID().toString() val now = DateTime.now() + balances[BalanceIdentity(groupId, BalanceType.STAKED, pendingTransaction.amount, now)] = - BalanceItem( - groupId = groupId, - type = pendingTransaction.type, - amount = pendingTransaction.amount, - rawCurrencyId = pendingTransaction.rawCurrencyId, - validatorAddress = pendingTransaction.validator?.address, - date = null, - pendingActions = emptyList(), - token = pendingTransaction.token, - isPending = true, + mutableListOf( + BalanceItem( + groupId = groupId, + type = pendingTransaction.type, + amount = pendingTransaction.amount, + rawCurrencyId = pendingTransaction.rawCurrencyId, + validatorAddress = pendingTransaction.validator?.address, + date = null, + pendingActions = emptyList(), + token = pendingTransaction.token, + isPending = true, + ), ) balances.entries.find { it.key.type == BalanceType.STAKED && it.key.amount == pendingTransaction.amount && - !it.value.isPending + !it.value.any { it.isPending } } ?.key ?.let { balances.remove(it) } @@ -85,7 +92,7 @@ class InvalidatePendingTransactionsUseCase( } } - return balances.values.toList() to transactionsToRemove + return balances.values.flatten() to transactionsToRemove } private data class BalanceIdentity( diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/analytics/StakingAnalyticsEvents.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/analytics/StakingAnalyticsEvents.kt index 920e6ce4cc..a57023584b 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/analytics/StakingAnalyticsEvents.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/analytics/StakingAnalyticsEvents.kt @@ -154,7 +154,7 @@ internal sealed class StakingAnalyticsEvents( event = "Errors", params = mapOf( AnalyticsParam.TOKEN_PARAM to token, - AnalyticsParam.ERROR_DESCRIPTION to errorType, + "ErrorType" to errorType, ), ) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt index 0571fbf65e..6087adb8c2 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt @@ -236,7 +236,9 @@ internal class SetInitialDataStateTransformer( } private fun getAprRange(validators: List): TextReference { - val aprValues = validators.mapNotNull { it.apr } + val aprValues = validators + .filter { it.preferred } + .mapNotNull { it.apr } val minApr = aprValues.min() val maxApr = aprValues.max() diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/approval/ShowApprovalBottomSheetTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/approval/ShowApprovalBottomSheetTransformer.kt index b5631913ad..47745c4c89 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/approval/ShowApprovalBottomSheetTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/approval/ShowApprovalBottomSheetTransformer.kt @@ -52,7 +52,7 @@ internal class ShowApprovalBottomSheetTransformer( data = GiveTxPermissionState.ReadyForRequest( currency = cryptoCurrency.symbol, amount = amountState.amountTextField.value, - approveType = ApproveType.LIMITED, + approveType = ApproveType.UNLIMITED, walletAddress = walletAddress, spenderAddress = validatorAddress, fee = resourceReference( diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/Wallet2CobrandImage.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/Wallet2CobrandImage.kt index 82d07f7000..46e771d72d 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/Wallet2CobrandImage.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/Wallet2CobrandImage.kt @@ -37,6 +37,12 @@ internal enum class Wallet2CobrandImage( batchIds = setOf("AF09"), ), + BitcoinGold( + cards2ResId = R.drawable.ill_bitcoingold_card2_120_106, + cards3ResId = R.drawable.ill_bitcoingold_card3_120_106, + batchIds = setOf("AF71"), + ), + BitcoinPizzaDay( cards2ResId = R.drawable.ill_pizza_day_card2_120_106, cards3ResId = R.drawable.ill_pizza_day_card3_120_106, @@ -91,6 +97,12 @@ internal enum class Wallet2CobrandImage( batchIds = setOf("AF31"), ), + Kaspa3( + cards2ResId = R.drawable.ill_kaspa3_card2_120_106, + cards3ResId = R.drawable.ill_kaspa3_card3_120_106, + batchIds = setOf("AF73"), + ), + KishuInu( cards2ResId = R.drawable.ill_kishu_inu_card2_120_106, cards3ResId = R.drawable.ill_kishu_inu_card3_120_106, diff --git a/features/wallet/impl/src/main/res/drawable/ill_bitcoingold_card2_120_106.webp b/features/wallet/impl/src/main/res/drawable/ill_bitcoingold_card2_120_106.webp new file mode 100644 index 0000000000..514ee528e9 Binary files /dev/null and b/features/wallet/impl/src/main/res/drawable/ill_bitcoingold_card2_120_106.webp differ diff --git a/features/wallet/impl/src/main/res/drawable/ill_bitcoingold_card3_120_106.webp b/features/wallet/impl/src/main/res/drawable/ill_bitcoingold_card3_120_106.webp new file mode 100644 index 0000000000..e24eb358d1 Binary files /dev/null and b/features/wallet/impl/src/main/res/drawable/ill_bitcoingold_card3_120_106.webp differ diff --git a/features/wallet/impl/src/main/res/drawable/ill_card2_with_ring_120_106.png b/features/wallet/impl/src/main/res/drawable/ill_card2_with_ring_120_106.png deleted file mode 100644 index 3f71b06f0e..0000000000 Binary files a/features/wallet/impl/src/main/res/drawable/ill_card2_with_ring_120_106.png and /dev/null differ diff --git a/features/wallet/impl/src/main/res/drawable/ill_card2_with_ring_120_106.webp b/features/wallet/impl/src/main/res/drawable/ill_card2_with_ring_120_106.webp new file mode 100644 index 0000000000..c937ff1dfa Binary files /dev/null and b/features/wallet/impl/src/main/res/drawable/ill_card2_with_ring_120_106.webp differ diff --git a/features/wallet/impl/src/main/res/drawable/ill_card_with_ring_120_106.png b/features/wallet/impl/src/main/res/drawable/ill_card_with_ring_120_106.png deleted file mode 100644 index adee5dfbc2..0000000000 Binary files a/features/wallet/impl/src/main/res/drawable/ill_card_with_ring_120_106.png and /dev/null differ diff --git a/features/wallet/impl/src/main/res/drawable/ill_card_with_ring_120_106.webp b/features/wallet/impl/src/main/res/drawable/ill_card_with_ring_120_106.webp new file mode 100644 index 0000000000..b4618c08b8 Binary files /dev/null and b/features/wallet/impl/src/main/res/drawable/ill_card_with_ring_120_106.webp differ diff --git a/features/wallet/impl/src/main/res/drawable/ill_kaspa3_card2_120_106.webp b/features/wallet/impl/src/main/res/drawable/ill_kaspa3_card2_120_106.webp new file mode 100644 index 0000000000..1eb50c47e7 Binary files /dev/null and b/features/wallet/impl/src/main/res/drawable/ill_kaspa3_card2_120_106.webp differ diff --git a/features/wallet/impl/src/main/res/drawable/ill_kaspa3_card3_120_106.webp b/features/wallet/impl/src/main/res/drawable/ill_kaspa3_card3_120_106.webp new file mode 100644 index 0000000000..3cbda287b1 Binary files /dev/null and b/features/wallet/impl/src/main/res/drawable/ill_kaspa3_card3_120_106.webp differ diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index fffbaabb5d..a939b22dfe 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -89,7 +89,7 @@ markdownComposeView = "0.5.4" # endregion Other libraries # region Tangem -tangemBlockchainSdk = "release-app_5.17-827" +tangemBlockchainSdk = "release-app_5.17-828" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "release-app_5.17-392" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^