From da21d46af1cc27680058c87b272f1e61a66fe3b0 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 6 Sep 2023 13:38:46 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../features/send/redux/SendScreenAction.kt | 7 ++++ .../send/redux/middlewares/SendMiddleware.kt | 13 ++++++++ .../send/redux/reducers/SendScreenReducer.kt | 1 + .../send/ui/dialogs/ChiaWarningDialog.kt | 32 +++++++++++++++++++ .../stateSubscribers/SendStateSubscriber.kt | 12 ++++--- .../main/res/values-ru/strings-blockchain.xml | 3 ++ .../main/res/values/strings-blockchain.xml | 3 ++ gradle/dependencies.toml | 2 +- 8 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/features/send/ui/dialogs/ChiaWarningDialog.kt diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt b/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt index cd9ad2160d..4c9eaf36a5 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt @@ -155,6 +155,13 @@ sealed class SendAction : SendScreenAction { val onOk: () -> Unit, ) : Dialog() + data class ChiaWarningDialog( + val blockchainName: String, + val maxOutputs: Int, + val maxAmount: BigDecimal, + val onOk: () -> Unit, + ) : Dialog() + sealed class SendTransactionFails : Dialog() { data class CardSdkError(val error: TangemSdkError) : Dialog() data class BlockchainSdkError(val error: com.tangem.blockchain.common.BlockchainSdkError) : Dialog() diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt index 628e934435..4e4d53efc4 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt @@ -307,6 +307,19 @@ private fun sendTransaction( ), ) } + is BlockchainSdkError.Chia.UtxoAmountError -> { + dispatch( + SendAction.Dialog.ChiaWarningDialog( + blockchainName = Blockchain.Chia.fullName, + maxOutputs = error.maxOutputs, + maxAmount = error.maxAmount, + onOk = { + dispatch(AmountAction.SetAmount(error.maxAmount, isUserInput = false)) + dispatch(AmountActionUi.CheckAmountToSend) + }, + ), + ) + } else -> { when { error.customMessage.contains(DemoTransactionSender.ID) -> { diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/SendScreenReducer.kt b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/SendScreenReducer.kt index 463b0dcaea..8a9cab2329 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/SendScreenReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/SendScreenReducer.kt @@ -46,6 +46,7 @@ private class SendReducer : SendInternalReducer { } is SendAction.Dialog.TezosWarningDialog -> sendState.copy(dialog = action) is SendAction.Dialog.KaspaWarningDialog -> sendState.copy(dialog = action) + is SendAction.Dialog.ChiaWarningDialog -> sendState.copy(dialog = action) is SendAction.Dialog.SendTransactionFails.CardSdkError -> sendState.copy(dialog = action) is SendAction.Dialog.SendTransactionFails.BlockchainSdkError -> sendState.copy(dialog = action) is SendAction.Dialog.RequestFeeError -> sendState.copy(dialog = action) diff --git a/app/src/main/java/com/tangem/tap/features/send/ui/dialogs/ChiaWarningDialog.kt b/app/src/main/java/com/tangem/tap/features/send/ui/dialogs/ChiaWarningDialog.kt new file mode 100644 index 0000000000..b4ba056146 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/features/send/ui/dialogs/ChiaWarningDialog.kt @@ -0,0 +1,32 @@ +package com.tangem.tap.features.send.ui.dialogs + +import android.content.Context +import androidx.appcompat.app.AlertDialog +import com.tangem.tap.features.send.redux.SendAction +import com.tangem.tap.store +import com.tangem.wallet.R + +// TODO: [REDACTED_JIRA] +object ChiaWarningDialog { + + fun create(context: Context, dialog: SendAction.Dialog.ChiaWarningDialog): AlertDialog { + return AlertDialog.Builder(context).apply { + setTitle(R.string.common_warning) + setMessage( + context.getString( + R.string.common_utxo_validate_withdrawal_message_warning, + dialog.blockchainName, + dialog.maxOutputs, + dialog.maxAmount.toPlainString(), + ), + ) + setPositiveButton(R.string.common_ok) { _, _ -> + dialog.onOk() + } + setOnDismissListener { + store.dispatch(SendAction.Dialog.Hide) + } + } + .create() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt b/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt index 6de86eba68..e05278fceb 100644 --- a/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt +++ b/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt @@ -18,10 +18,7 @@ import com.tangem.tap.features.send.redux.SendAction import com.tangem.tap.features.send.redux.states.* import com.tangem.tap.features.send.ui.FeeUiHelper import com.tangem.tap.features.send.ui.SendFragment -import com.tangem.tap.features.send.ui.dialogs.KaspaWarningDialog -import com.tangem.tap.features.send.ui.dialogs.RequestFeeErrorDialog -import com.tangem.tap.features.send.ui.dialogs.SendTransactionFailsDialog -import com.tangem.tap.features.send.ui.dialogs.TezosWarningDialog +import com.tangem.tap.features.send.ui.dialogs.* import com.tangem.tap.features.wallet.redux.ProgressState import com.tangem.tap.features.wallet.redux.utils.ROUGH_SIGN import com.tangem.tap.features.wallet.redux.utils.UNKNOWN_AMOUNT_SIGN @@ -124,6 +121,7 @@ class SendStateSubscriber(fragment: BaseStoreFragment) : FragmentStateSubscriber } } + @Suppress("ComplexMethod") private fun handleSendScreen(fg: SendFragment, state: SendState) = with(fg.binding) { when (state.dialog) { is SendAction.Dialog.TezosWarningDialog -> { @@ -138,6 +136,12 @@ class SendStateSubscriber(fragment: BaseStoreFragment) : FragmentStateSubscriber dialog?.show() } } + is SendAction.Dialog.ChiaWarningDialog -> { + if (dialog == null) { + dialog = ChiaWarningDialog.create(fg.requireContext(), state.dialog) + dialog?.show() + } + } is SendAction.Dialog.SendTransactionFails.CardSdkError -> { if (dialog == null) { dialog = SendTransactionFailsDialog.create(fg.requireContext(), state.dialog) diff --git a/core/res/src/main/res/values-ru/strings-blockchain.xml b/core/res/src/main/res/values-ru/strings-blockchain.xml index 0e716ae5d1..fcec1f9e0c 100644 --- a/core/res/src/main/res/values-ru/strings-blockchain.xml +++ b/core/res/src/main/res/values-ru/strings-blockchain.xml @@ -3,6 +3,9 @@ По умолчанию Устаревший Не удалось получить комиссию + Из-за ограничений %1$s в одну транзакцию может поместиться только %2$d UTXO. Это означает, что вы можете отправить только %3$s или меньше. Вам нужно уменьшить сумму. + Недостаточно средств для совершения транзакции. Пожалуйста, пополните свой аккаунт. + Произошла ошибка. Код: %s. Из-за ограничений Kaspa в одну транзакцию может поместиться только %1$d UTXO. Это означает, что вы можете отправить только %2$s или меньше. Вам нужно уменьшить сумму. Пополните счет на %1$s+ %2$s, чтобы создать аккаунт Аккаунт получателя не активирован. Отправьте %s или более для активации аккаунта. diff --git a/core/res/src/main/res/values/strings-blockchain.xml b/core/res/src/main/res/values/strings-blockchain.xml index 41209dd8f9..7e938d5420 100644 --- a/core/res/src/main/res/values/strings-blockchain.xml +++ b/core/res/src/main/res/values/strings-blockchain.xml @@ -3,6 +3,9 @@ Default Legacy Failed to get fee + Due to %1$s limitations only %2$d UTXOs can fit in a single transaction. This means you can only send %3$s or less. You need to reduce the amount. + Not enough funds for the transaction. Please top up your account. + An error occurred. Code: %s. Due to Kaspa limitations only %1$d UTXOs can fit in a single transaction. This means you can only send %2$s or less. You need to reduce the amount. Load %1$s+ %2$s to create account Destination account is not active. Send %s or more to activate the account. diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index b8af65e72b..f9144bb4cf 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -80,7 +80,7 @@ okHttp-prettyLogging = "3.1.0" # endregion Other libraries # region Tangem -tangemBlockchainSdk = "release-app_4.10-336" +tangemBlockchainSdk = "release-app_4.10-341" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "release-app_4.10-292" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds