diff --git a/packages/app/src/systems/Core/utils/wallet.ts b/packages/app/src/systems/Core/utils/wallet.ts index 1c212b861d..20f3d3d9b0 100644 --- a/packages/app/src/systems/Core/utils/wallet.ts +++ b/packages/app/src/systems/Core/utils/wallet.ts @@ -1,7 +1,18 @@ -import type { TransactionRequestLike, TransactionResponse } from 'fuels'; +import type { + EstimateTransactionParams, + TransactionRequest, + TransactionRequestLike, + TransactionResponse, + // SendTransactionParams, This should come from fuels +} from 'fuels'; import { WalletLocked, hashMessage, transactionRequestify } from 'fuels'; import { VaultService } from '~/systems/Vault'; +interface SendTransactionParams { + skipCustomFee?: boolean; + onBeforeSend?: (txRequest: TransactionRequest) => Promise; +} + export class WalletLockedCustom extends WalletLocked { /** * Sign message with wallet instance privateKey @@ -39,9 +50,16 @@ export class WalletLockedCustom extends WalletLocked { } async sendTransaction( - transactionRequestLike: TransactionRequestLike + transactionRequestLike: TransactionRequestLike, + params?: EstimateTransactionParams & SendTransactionParams ): Promise { - const transactionRequest = transactionRequestify(transactionRequestLike); + let transactionRequest = transactionRequestify(transactionRequestLike); + + // Apply onBeforeSend hook if provided + if (params?.onBeforeSend) { + transactionRequest = await params.onBeforeSend(transactionRequest); + } + const txRequestToSend = await this.populateTransactionWitnessesSignature(transactionRequest); diff --git a/packages/app/src/systems/DApp/pages/TransactionRequest/TransactionRequest.tsx b/packages/app/src/systems/DApp/pages/TransactionRequest/TransactionRequest.tsx index 433923442c..e5de4132f0 100644 --- a/packages/app/src/systems/DApp/pages/TransactionRequest/TransactionRequest.tsx +++ b/packages/app/src/systems/DApp/pages/TransactionRequest/TransactionRequest.tsx @@ -93,6 +93,7 @@ export function TransactionRequest() { errors={errors.simulateTxErrors} isConfirm fees={fees} + skipCustomFee={txRequest.input.skipCustomFee} /> )} {shouldShowTxExecuted && ( @@ -100,6 +101,7 @@ export function TransactionRequest() { showDetails tx={txSummaryExecuted} txStatus={executedStatus()} + skipCustomFee={txRequest.input.skipCustomFee} footer={ status('failed') && (