From b168d40f52156f2172413bf5aeab088ec5522037 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 23 Aug 2022 16:45:21 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../send/redux/reducers/FeeReducer.kt | 59 ++++++++----------- .../send/redux/reducers/ReceiptReducer.kt | 22 +++++-- .../features/send/redux/states/FeeState.kt | 24 ++++---- .../tap/features/wallet/redux/WalletState.kt | 1 + dependencies.gradle | 2 +- 5 files changed, 52 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/FeeReducer.kt b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/FeeReducer.kt index fd653557c7..4c2fae60ba 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/FeeReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/FeeReducer.kt @@ -1,13 +1,9 @@ package com.tangem.tap.features.send.redux.reducers import com.tangem.blockchain.common.Amount -import com.tangem.blockchain.common.AmountType -import com.tangem.blockchain.common.Blockchain -import com.tangem.tap.common.extensions.fullNameWithoutTestnet import com.tangem.tap.features.send.redux.FeeAction import com.tangem.tap.features.send.redux.FeeActionUi import com.tangem.tap.features.send.redux.SendScreenAction -import com.tangem.tap.features.send.redux.states.FeePrecision import com.tangem.tap.features.send.redux.states.FeeState import com.tangem.tap.features.send.redux.states.FeeType import com.tangem.tap.features.send.redux.states.SendState @@ -28,10 +24,9 @@ class FeeReducer : SendInternalReducer { is FeeActionUi.ChangeSelectedFee -> { val currentFee = createValueOfFeeAmount(action.feeType, state.feeList) state.copy( - selectedFeeType = action.feeType, - currentFee = currentFee + selectedFeeType = action.feeType, + currentFee = currentFee, ) - } is FeeActionUi.ChangeIncludeFee -> state.copy(feeIsIncluded = action.isIncluded) } @@ -46,9 +41,9 @@ class FeeReducer : SendInternalReducer { is FeeAction.ChangeLayoutVisibility -> { fun getVisibility(current: Boolean, proposed: Boolean?): Boolean = proposed ?: current state.copy( - mainLayoutIsVisible = getVisibility(state.mainLayoutIsVisible, action.main), - controlsLayoutIsVisible = getVisibility(state.controlsLayoutIsVisible, action.controls), - feeChipGroupIsVisible = getVisibility(state.feeChipGroupIsVisible, action.chipGroup) + mainLayoutIsVisible = getVisibility(state.mainLayoutIsVisible, action.main), + controlsLayoutIsVisible = getVisibility(state.controlsLayoutIsVisible, action.controls), + feeChipGroupIsVisible = getVisibility(state.feeChipGroupIsVisible, action.chipGroup), ) } is FeeAction.FeeCalculation.SetFeeResult -> { @@ -58,30 +53,30 @@ class FeeReducer : SendInternalReducer { val currentFee = createValueOfFeeAmount(feeType, fees) state.copy( - selectedFeeType = feeType, - feeList = fees, - currentFee = currentFee, - error = null, - feePrecision = getFeePrecision(sendState) + selectedFeeType = feeType, + feeList = fees, + currentFee = currentFee, + error = null, + feeIsApproximate = isFeeApproximate(sendState), ) } else { val feeType = getCurrentFeeType(state) val currentFee = createValueOfFeeAmount(feeType, fees) state.copy( - selectedFeeType = feeType, - feeList = fees, - currentFee = currentFee, - error = null, - feePrecision = getFeePrecision(sendState) + selectedFeeType = feeType, + feeList = fees, + currentFee = currentFee, + error = null, + feeIsApproximate = isFeeApproximate(sendState), ) } } is FeeAction.FeeCalculation.SetFeeError -> { state.copy( - feeList = null, - currentFee = null, - error = action.error + feeList = null, + currentFee = null, + error = action.error, ) } } @@ -104,20 +99,12 @@ class FeeReducer : SendInternalReducer { } } - private fun getFeePrecision(sendState: SendState): FeePrecision { - val blockchain = sendState.walletManager?.wallet?.blockchain - return if ( - (blockchain?.fullNameWithoutTestnet == Blockchain.Arbitrum.fullName || - blockchain?.fullNameWithoutTestnet == Blockchain.Tron.fullName || - blockchain?.fullNameWithoutTestnet == Blockchain.Gnosis.fullName) && - sendState.amountState.typeOfAmount is AmountType.Token - ) { - FeePrecision.CAN_BE_LOWER - } else { - FeePrecision.PRECISE - } - } + private fun isFeeApproximate(sendState: SendState): Boolean { + val blockchain = sendState.walletManager?.wallet?.blockchain ?: return false + val amountType = sendState.amountState.typeOfAmount + return blockchain.isFeeApproximate(amountType) + } private fun getCurrentFeeType(state: FeeState): FeeType { return if (state.selectedFeeType == FeeType.SINGLE) FeeType.NORMAL else state.selectedFeeType diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/ReceiptReducer.kt b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/ReceiptReducer.kt index c15813fdaa..64d5cc23d3 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/ReceiptReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/ReceiptReducer.kt @@ -6,7 +6,18 @@ import com.tangem.tap.common.extensions.scaleToFiat import com.tangem.tap.common.extensions.stripZeroPlainString import com.tangem.tap.features.send.redux.ReceiptAction.RefreshReceipt import com.tangem.tap.features.send.redux.SendScreenAction -import com.tangem.tap.features.send.redux.states.* +import com.tangem.tap.features.send.redux.states.AmountState +import com.tangem.tap.features.send.redux.states.FeeState +import com.tangem.tap.features.send.redux.states.MainCurrencyType +import com.tangem.tap.features.send.redux.states.ReceiptCrypto +import com.tangem.tap.features.send.redux.states.ReceiptFiat +import com.tangem.tap.features.send.redux.states.ReceiptLayoutType +import com.tangem.tap.features.send.redux.states.ReceiptState +import com.tangem.tap.features.send.redux.states.ReceiptSymbols +import com.tangem.tap.features.send.redux.states.ReceiptTokenCrypto +import com.tangem.tap.features.send.redux.states.ReceiptTokenFiat +import com.tangem.tap.features.send.redux.states.SendState +import com.tangem.tap.features.wallet.redux.WalletState.Companion.CAN_BE_LOWER_SIGN import com.tangem.tap.features.wallet.redux.WalletState.Companion.UNKNOWN_AMOUNT_SIGN import com.tangem.tap.store import java.math.BigDecimal @@ -125,8 +136,7 @@ class ReceiptReducer : SendInternalReducer { val totalFiat = amountFiat.plus(feeFiat) ReceiptTokenFiat( amountFiat = amountFiat.scaleToFiat(true).stripZeroPlainString(), - feeFiat = feeFiat.scaleToFiat(true) - .stripZeroPlainString().addPrecisionSign(), + feeFiat = feeFiat.scaleToFiat(true).stripZeroPlainString().addPrecisionSign(), totalFiat = totalFiat.scaleToFiat(true).stripZeroPlainString(), willSentToken = tokensToSend.stripZeroPlainString(), willSentFeeCoin = feeCoin.stripZeroPlainString(), @@ -207,6 +217,8 @@ class ReceiptReducer : SendInternalReducer { } } - private fun String.addPrecisionSign(): String = - ("${feeState.feePrecision.symbol} $this").trim() + private fun String.addPrecisionSign(): String { + val result = if (feeState.feeIsApproximate) "$CAN_BE_LOWER_SIGN $this" else "" + return result.trim() + } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/states/FeeState.kt b/app/src/main/java/com/tangem/tap/features/send/redux/states/FeeState.kt index 87b29f304b..4c9818a669 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/states/FeeState.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/states/FeeState.kt @@ -11,21 +11,17 @@ enum class FeeType { SINGLE, LOW, NORMAL, PRIORITY } -enum class FeePrecision(val symbol: String) { - PRECISE(""), CAN_BE_LOWER("<") -} - data class FeeState( - val selectedFeeType: FeeType = FeeType.NORMAL, - val feeList: List? = null, - val currentFee: Amount? = null, - val feeIsIncluded: Boolean = false, - val mainLayoutIsVisible: Boolean = false, - val controlsLayoutIsVisible: Boolean = false, - val feeChipGroupIsVisible: Boolean = true, - val includeFeeSwitcherIsEnabled: Boolean = true, - val error: FeeAction.Error? = null, - val feePrecision: FeePrecision = FeePrecision.PRECISE + val selectedFeeType: FeeType = FeeType.NORMAL, + val feeList: List? = null, + val currentFee: Amount? = null, + val feeIsIncluded: Boolean = false, + val feeIsApproximate: Boolean = false, + val mainLayoutIsVisible: Boolean = false, + val controlsLayoutIsVisible: Boolean = false, + val feeChipGroupIsVisible: Boolean = true, + val includeFeeSwitcherIsEnabled: Boolean = true, + val error: FeeAction.Error? = null, ) : SendScreenState { override val stateId: StateId = StateId.FEE diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt index 48c886d939..594676e0ec 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt @@ -287,6 +287,7 @@ data class WalletState( companion object { const val UNKNOWN_AMOUNT_SIGN = "—" const val ROUGH_SIGN = "≈" + const val CAN_BE_LOWER_SIGN = "<" } } diff --git a/dependencies.gradle b/dependencies.gradle index e1c383532f..8d2e4ea106 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -2,7 +2,7 @@ ext.versions = [ kotlin : '1.6.10', build_gradle : '7.1.3', tangem_card_sdk : 'develop-159', - tangem_blockchain_sdk: 'develop-105', + tangem_blockchain_sdk: 'develop-106', // tangem_blockchain_sdk: '0.0.1', ]