From 6abbcbb92170b1657d96b6e81f385d8a1675e4d3 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 16 Sep 2024 20:13:40 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/src/main/assets/tangem-app-config | 2 +- .../impl/presentation/state/SendUiState.kt | 1 + .../state/fee/SendFeeStateConverter.kt | 4 ++ .../state/previewdata/FeeStatePreviewData.kt | 1 + .../presentation/ui/SendNavigationButtons.kt | 59 ++++++++++++++++--- 5 files changed, 57 insertions(+), 10 deletions(-) diff --git a/app/src/main/assets/tangem-app-config b/app/src/main/assets/tangem-app-config index 57484a0139..328c13826f 160000 --- a/app/src/main/assets/tangem-app-config +++ b/app/src/main/assets/tangem-app-config @@ -1 +1 @@ -Subproject commit 57484a0139299d1229872c626b2c9cb34442038c +Subproject commit 328c13826f7e52ba783db1ba39de5b17b1b79bc5 diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/SendUiState.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/SendUiState.kt index e9badc64d0..1282a69df2 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/SendUiState.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/SendUiState.kt @@ -113,6 +113,7 @@ internal sealed class SendStates { val isFeeApproximate: Boolean, val isCustomSelected: Boolean, val notifications: ImmutableList, + val isTronToken: Boolean, ) : SendStates() /** Send state */ diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeStateConverter.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeStateConverter.kt index d24ed03da0..6a207e9a44 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeStateConverter.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeStateConverter.kt @@ -1,8 +1,10 @@ package com.tangem.features.send.impl.presentation.state.fee import com.tangem.domain.appcurrency.model.AppCurrency +import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.features.send.impl.presentation.state.SendStates +import com.tangem.lib.crypto.BlockchainUtils.isTron import com.tangem.utils.Provider import com.tangem.utils.converter.Converter import kotlinx.collections.immutable.persistentListOf @@ -23,6 +25,8 @@ internal class SendFeeStateConverter( isFeeApproximate = false, isCustomSelected = false, isFeeConvertibleToFiat = cryptoCurrencyStatusProvider().currency.network.hasFiatFeeRate, + isTronToken = cryptoCurrencyStatusProvider().currency is CryptoCurrency.Token && + isTron(cryptoCurrencyStatusProvider().currency.network.id.value), ) } } \ No newline at end of file diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/FeeStatePreviewData.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/FeeStatePreviewData.kt index 7d00f7102d..1256218851 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/FeeStatePreviewData.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/FeeStatePreviewData.kt @@ -83,6 +83,7 @@ internal object FeeStatePreviewData { notifications = persistentListOf(), isCustomSelected = false, isFeeConvertibleToFiat = true, + isTronToken = false, ) val feeChoosableState = feeState.copy( diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt index 18d8413082..8cd6867e1d 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt @@ -20,6 +20,7 @@ import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign +import com.tangem.blockchain.common.transaction.Fee import com.tangem.common.ui.amountScreen.models.AmountState import com.tangem.common.ui.amountScreen.ui.SendDoneButtons import com.tangem.common.ui.amountScreen.utils.getFiatString @@ -187,14 +188,23 @@ private fun SendingText( fiatCurrencyCode = feeState.appCurrency.code, ) val textResource = remember(uiState) { - resourceReference( - id = if (feeState.isFeeConvertibleToFiat) { - R.string.send_summary_transaction_description - } else { - R.string.send_summary_transaction_description_no_fiat_fee - }, - formatArgs = wrappedList(sendingValue, feeState.getFiatValue()), - ) + val fee = feeState.fee + if (feeState.isTronToken && fee is Fee.Tron) { + getTokenFeeSendingText( + feeState = feeState, + fee = fee, + sendingValue = sendingValue, + ) + } else { + resourceReference( + id = if (feeState.isFeeConvertibleToFiat) { + R.string.send_summary_transaction_description + } else { + R.string.send_summary_transaction_description_no_fiat_fee + }, + formatArgs = wrappedList(sendingValue, feeState.getFiatValue()), + ) + } } Text( text = textResource.resolveAnnotatedReference(), @@ -260,4 +270,35 @@ private fun isButtonEnabled(currentState: SendUiCurrentScreen, uiState: SendUiSt SendUiStateType.EditFee -> uiState.editFeeState?.isPrimaryButtonEnabled else -> true } ?: false -} \ No newline at end of file +} + +private fun getTokenFeeSendingText(feeState: SendStates.FeeState, fee: Fee.Tron, sendingValue: String): TextReference { + val suffix = when { + fee.feeEnergy == 0L -> { + resourceReference( + R.string.send_summary_transaction_description_suffix_including, + wrappedList(feeState.getFiatValue()), + ) + } + fee.feeEnergy <= fee.remainingEnergy -> { + resourceReference( + R.string.send_summary_transaction_description_suffix_fee_covered, + wrappedList(fee.feeEnergy), + ) + } + else -> { + resourceReference( + R.string.send_summary_transaction_description_suffix_fee_reduced, + wrappedList(fee.remainingEnergy), + ) + } + } + val prefix = resourceReference( + R.string.send_summary_transaction_description_prefix, + wrappedList(sendingValue), + ) + + return combinedReference(prefix, COMMA_SEPARATOR, suffix) +} + +private val COMMA_SEPARATOR = stringReference(", ") \ No newline at end of file