From 518183728d4eadf1616b62a1fab905e413d75c27 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 24 May 2021 14:12:23 +0300 Subject: [PATCH 1/3] Updated on 2026-08-14 --- .../tap/features/wallet/redux/reducers/OnWalletLoadedReducer.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/OnWalletLoadedReducer.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/OnWalletLoadedReducer.kt index fc3e7a49b3..145bcbcbc2 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/OnWalletLoadedReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/OnWalletLoadedReducer.kt @@ -113,7 +113,7 @@ class OnWalletLoadedReducer { val tokenFiatAmount = tokenFiatRate?.let { tokenAmount.value?.toFiatString(it, fiatCurrencySymbol) } TokenData( tokenAmount.value?.toFormattedCurrencyString( - tokenAmount.decimals, token.symbol + token.decimals, token.symbol ) ?: "", tokenAmount.currencySymbol, tokenFiatAmount ) From 2ee782528d746a1751a51a15408bc66be70cb0e8 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 24 May 2021 14:19:02 +0300 Subject: [PATCH 2/3] Updated on 2026-08-14 --- .../tap/domain/extensions/Blockchain.kt | 9 ++-- .../domain/extensions/WalletManagerFactory.kt | 41 ++++++++++--------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/domain/extensions/Blockchain.kt b/app/src/main/java/com/tangem/tap/domain/extensions/Blockchain.kt index 7d544aa89f..6baaf8f668 100644 --- a/app/src/main/java/com/tangem/tap/domain/extensions/Blockchain.kt +++ b/app/src/main/java/com/tangem/tap/domain/extensions/Blockchain.kt @@ -29,14 +29,15 @@ fun Blockchain.minimalAmount(): BigDecimal { return 1.toBigDecimal().movePointLeft(decimals()) } -fun Blockchain.getCurve(): EllipticCurve? { +fun Blockchain.getSupportedCurves(): List? { return when (this) { Blockchain.Unknown -> null Blockchain.Bitcoin, Blockchain.BitcoinTestnet, Blockchain.BitcoinCash, Blockchain.Litecoin, Blockchain.Ducatus, Blockchain.Ethereum, Blockchain.EthereumTestnet, Blockchain.RSK, - Blockchain.XRP, Blockchain.Binance, Blockchain.BinanceTestnet -> EllipticCurve.Secp256k1 - Blockchain.Tezos, Blockchain.Cardano, Blockchain.CardanoShelley, Blockchain.Stellar -> - EllipticCurve.Ed25519 + Blockchain.XRP, Blockchain.Binance, Blockchain.BinanceTestnet -> listOf(EllipticCurve.Secp256k1) + Blockchain.Tezos -> listOf(EllipticCurve.Secp256k1, EllipticCurve.Ed25519) + Blockchain.Cardano, Blockchain.CardanoShelley, Blockchain.Stellar -> + listOf(EllipticCurve.Ed25519) } } diff --git a/app/src/main/java/com/tangem/tap/domain/extensions/WalletManagerFactory.kt b/app/src/main/java/com/tangem/tap/domain/extensions/WalletManagerFactory.kt index fc847ae987..f09492cccd 100644 --- a/app/src/main/java/com/tangem/tap/domain/extensions/WalletManagerFactory.kt +++ b/app/src/main/java/com/tangem/tap/domain/extensions/WalletManagerFactory.kt @@ -5,29 +5,30 @@ import com.tangem.blockchain.common.WalletManager import com.tangem.blockchain.common.WalletManagerFactory import com.tangem.commands.common.card.Card import com.tangem.commands.common.card.EllipticCurve +import com.tangem.commands.wallet.CardWallet -fun WalletManagerFactory.makeWalletManagerForApp(card: Card, blockchain: Blockchain): WalletManager? { - val curve = blockchain.getCurve() ?: return null - val publicKey = card.getWallets().firstOrNull { it.curve == curve }?.publicKey ?: return null - return makeWalletManager(card.cardId, publicKey, blockchain, curve) +fun WalletManagerFactory.makeWalletManagerForApp( + card: Card, + blockchain: Blockchain, +): WalletManager? { + val supportedCurves = blockchain.getSupportedCurves() ?: return null + val wallets = card.getWallets().filter { wallet -> supportedCurves.contains(wallet.curve) } + val wallet = selectWallet(wallets) + val publicKey = wallet?.publicKey ?: return null + val curveToUse = wallet.curve ?: return null + return makeWalletManager(card.cardId, publicKey, blockchain, curveToUse) +} + +private fun selectWallet(wallets: List): CardWallet? { + return when (wallets.size) { + 0 -> null + 1 -> wallets[0] + else -> wallets.firstOrNull { it.curve == EllipticCurve.Secp256k1 } ?: wallets[0] + } } fun WalletManagerFactory.makeWalletManagersForApp( - card: Card, blockchains: List + card: Card, blockchains: List, ): List { - return makeWalletManagersForCurve(card, blockchains, EllipticCurve.Secp256k1) + - makeWalletManagersForCurve(card, blockchains, EllipticCurve.Ed25519) + return blockchains.mapNotNull { blockchain -> makeWalletManagerForApp(card, blockchain) } } - -fun WalletManagerFactory.makeWalletManagersForCurve( - card: Card, blockchains: List, curve: EllipticCurve -): List { - val blockchainsForCurve = blockchains.filter { it.getCurve() == curve } - val walletPublicKey = card.getWallets().firstOrNull { it.curve == curve }?.publicKey - - return if (walletPublicKey != null) { - makeWalletManagers(card.cardId, walletPublicKey, blockchainsForCurve, curve) - } else { - emptyList() - } -} \ No newline at end of file From 460ce6e62df0309cb75fa75fa924b6db32ef156c Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 24 May 2021 15:31:22 +0300 Subject: [PATCH 3/3] Updated on 2026-08-14 --- .../warningMessage/WarningMessagesManager.kt | 7 ++++--- .../wallet/redux/middlewares/WarningsMiddleware.kt | 14 +++++--------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessagesManager.kt b/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessagesManager.kt index 59e91a7f6a..1c59ee5c55 100644 --- a/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessagesManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessagesManager.kt @@ -1,11 +1,8 @@ package com.tangem.tap.domain.configurable.warningMessage -import com.tangem.TangemSdkError import com.tangem.blockchain.common.Blockchain import com.tangem.tangem_sdk_new.ui.animation.VoidCallback import com.tangem.tap.common.extensions.containsAny -import com.tangem.tap.features.wallet.redux.WalletAction -import com.tangem.tap.store import com.tangem.wallet.R /** @@ -68,6 +65,10 @@ class WarningMessagesManager( sortByPriority() } + fun removeWarnings(messageRes: Int) { + warningsList.removeIf { it.messageResId == messageRes } + } + private fun sortByPriority() { warningsList.sortBy { it.priority.ordinal } } diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WarningsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WarningsMiddleware.kt index 6ac2bcdf21..0ff512dc45 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WarningsMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WarningsMiddleware.kt @@ -54,6 +54,10 @@ class WarningsMiddleware { if (action.remainingSignatures != null && action.remainingSignatures <= WarningMessagesManager.REMAINING_SIGNATURES_WARNING ) { + store.state.globalState.warningManager + ?.removeWarnings( + messageRes = R.string.warning_low_signatures_format + ) addWarningMessage( warning = WarningMessagesManager.remainingSignaturesNotEnough(action.remainingSignatures), @@ -102,10 +106,6 @@ class WarningsMiddleware { if (remainingSignatures != null && remainingSignatures <= WarningMessagesManager.REMAINING_SIGNATURES_WARNING ) { - getWarnings() - .find { it.messageResId == R.string.warning_low_signatures_format } - ?.let { previousWarning -> hideWarning(previousWarning) } - addWarningMessage( WarningMessagesManager.remainingSignaturesNotEnough( remainingSignatures @@ -115,7 +115,7 @@ class WarningsMiddleware { } private fun checkIfWarningNeeded( - card: Card + card: Card, ): WarningMessage? { if (card.isTwinCard()) return null @@ -196,8 +196,4 @@ class WarningsMiddleware { store.state.walletState.blockchains ) } - - private fun hideWarning(warning: WarningMessage) { - store.state.globalState.warningManager?.hideWarning(warning) - } } \ No newline at end of file