From ce6cb67993f3e9ba20cfb368355909f87e5f3f40 Mon Sep 17 00:00:00 2001 From: Rafael Date: Thu, 27 Feb 2025 13:02:53 +0600 Subject: [PATCH 1/2] Prevent TC transactions with amount exceeding account's balance --- .../tonconnect/TonConnectSendRequestViewModel.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/tonconnect/TonConnectSendRequestViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/tonconnect/TonConnectSendRequestViewModel.kt index 9548baf593..49290c47b0 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/tonconnect/TonConnectSendRequestViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/tonconnect/TonConnectSendRequestViewModel.kt @@ -121,6 +121,17 @@ class TonConnectSendRequestViewModel( tonKitWrapper = it } + val accountBalance = tonKitWrapper.tonKit.account?.balance + if (accountBalance != null){ + sendRequestEntity.messages.forEach { message -> + if (message.amount > accountBalance){ + error = TonConnectSendRequestError.InvalidData("Transaction amount exceeds available balance") + responseBadRequest(sendRequestEntity) + return + } + } + } + val tonEvent = try { val event = transactionSigner.getDetails(sendRequestEntity, tonWallet) tonEvent = event From f57dc99a76164dafa8f6d7ced6beb8ff89082cb2 Mon Sep 17 00:00:00 2001 From: Rafael Date: Thu, 27 Feb 2025 13:58:27 +0600 Subject: [PATCH 2/2] Check total sent amount in messages for TonConnect --- .../tonconnect/TonConnectSendRequestViewModel.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/tonconnect/TonConnectSendRequestViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/tonconnect/TonConnectSendRequestViewModel.kt index 49290c47b0..73604f4fdc 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/tonconnect/TonConnectSendRequestViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/tonconnect/TonConnectSendRequestViewModel.kt @@ -123,12 +123,11 @@ class TonConnectSendRequestViewModel( val accountBalance = tonKitWrapper.tonKit.account?.balance if (accountBalance != null){ - sendRequestEntity.messages.forEach { message -> - if (message.amount > accountBalance){ - error = TonConnectSendRequestError.InvalidData("Transaction amount exceeds available balance") - responseBadRequest(sendRequestEntity) - return - } + val totalSentAmount = sendRequestEntity.messages.sumOf { it.amount } + if (totalSentAmount > accountBalance){ + error = TonConnectSendRequestError.InvalidData("Transaction amount exceeds available balance") + responseBadRequest(sendRequestEntity) + return } }