fix: controller send transaction approved when user reject transaction in hardware devices.
This PR will fix some issue caused by user reject transaction in hardware wallet, which cause a lot of incorrect event log in segment.
Updated the transaction approval logic to check the status of the transaction. If the transaction fails due to user rejection or other errors, it now publishes a failure message with the error details. This change improves error handling and user feedback during transaction processing.
Explanation
References
Checklist
- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
- [x] I've communicated my changes to consumers by updating changelogs for packages I've changed, highlighting breaking changes as necessary
- [x] I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes
[!NOTE] Ensure post-approval emits transactionFailed (with error) instead of transactionApproved when the transaction ends in failed status (e.g., hardware wallet rejection).
- Transaction approval flow (
packages/transaction-controller/src/TransactionController.ts):
- After approval, check
updatedTransactionMeta.status; iffailed, publish${controllerName}:transactionFailedwitherrormessage, else publish${controllerName}:transactionApproved.Written by Cursor Bugbot for commit e0caebb173f1c2f490f5db3f3062c7948fae88d1. This will update automatically on new commits. Configure here.
@metamaskbot publish-preview
Preview builds have been published. See these instructions for more information about preview builds.
Expand for full list of packages and versions.
{
"@metamask-previews/account-tree-controller": "4.0.0-preview-e0caebb",
"@metamask-previews/accounts-controller": "35.0.0-preview-e0caebb",
"@metamask-previews/address-book-controller": "7.0.1-preview-e0caebb",
"@metamask-previews/analytics-controller": "0.0.0-preview-e0caebb",
"@metamask-previews/announcement-controller": "8.0.0-preview-e0caebb",
"@metamask-previews/app-metadata-controller": "2.0.0-preview-e0caebb",
"@metamask-previews/approval-controller": "8.0.0-preview-e0caebb",
"@metamask-previews/assets-controllers": "91.0.0-preview-e0caebb",
"@metamask-previews/base-controller": "9.0.0-preview-e0caebb",
"@metamask-previews/bridge-controller": "63.0.0-preview-e0caebb",
"@metamask-previews/bridge-status-controller": "63.0.0-preview-e0caebb",
"@metamask-previews/build-utils": "3.0.4-preview-e0caebb",
"@metamask-previews/chain-agnostic-permission": "1.2.2-preview-e0caebb",
"@metamask-previews/claims-controller": "0.2.0-preview-e0caebb",
"@metamask-previews/composable-controller": "12.0.0-preview-e0caebb",
"@metamask-previews/controller-utils": "11.16.0-preview-e0caebb",
"@metamask-previews/core-backend": "5.0.0-preview-e0caebb",
"@metamask-previews/delegation-controller": "2.0.0-preview-e0caebb",
"@metamask-previews/earn-controller": "11.0.0-preview-e0caebb",
"@metamask-previews/eip-5792-middleware": "2.0.0-preview-e0caebb",
"@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-e0caebb",
"@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-e0caebb",
"@metamask-previews/ens-controller": "19.0.0-preview-e0caebb",
"@metamask-previews/error-reporting-service": "3.0.0-preview-e0caebb",
"@metamask-previews/eth-block-tracker": "15.0.0-preview-e0caebb",
"@metamask-previews/eth-json-rpc-middleware": "22.0.0-preview-e0caebb",
"@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-e0caebb",
"@metamask-previews/foundryup": "1.0.1-preview-e0caebb",
"@metamask-previews/gas-fee-controller": "26.0.0-preview-e0caebb",
"@metamask-previews/gator-permissions-controller": "0.6.0-preview-e0caebb",
"@metamask-previews/json-rpc-engine": "10.2.0-preview-e0caebb",
"@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-e0caebb",
"@metamask-previews/keyring-controller": "25.0.0-preview-e0caebb",
"@metamask-previews/logging-controller": "7.0.1-preview-e0caebb",
"@metamask-previews/message-manager": "14.1.0-preview-e0caebb",
"@metamask-previews/messenger": "0.3.0-preview-e0caebb",
"@metamask-previews/multichain-account-service": "4.0.0-preview-e0caebb",
"@metamask-previews/multichain-api-middleware": "1.2.4-preview-e0caebb",
"@metamask-previews/multichain-network-controller": "3.0.0-preview-e0caebb",
"@metamask-previews/multichain-transactions-controller": "7.0.0-preview-e0caebb",
"@metamask-previews/name-controller": "9.0.0-preview-e0caebb",
"@metamask-previews/network-controller": "26.0.0-preview-e0caebb",
"@metamask-previews/network-enablement-controller": "4.0.0-preview-e0caebb",
"@metamask-previews/notification-services-controller": "21.0.0-preview-e0caebb",
"@metamask-previews/permission-controller": "12.1.1-preview-e0caebb",
"@metamask-previews/permission-log-controller": "5.0.0-preview-e0caebb",
"@metamask-previews/phishing-controller": "16.1.0-preview-e0caebb",
"@metamask-previews/polling-controller": "16.0.0-preview-e0caebb",
"@metamask-previews/preferences-controller": "22.0.0-preview-e0caebb",
"@metamask-previews/profile-sync-controller": "27.0.0-preview-e0caebb",
"@metamask-previews/rate-limit-controller": "7.0.0-preview-e0caebb",
"@metamask-previews/remote-feature-flag-controller": "2.0.1-preview-e0caebb",
"@metamask-previews/sample-controllers": "4.0.0-preview-e0caebb",
"@metamask-previews/seedless-onboarding-controller": "7.0.0-preview-e0caebb",
"@metamask-previews/selected-network-controller": "26.0.0-preview-e0caebb",
"@metamask-previews/shield-controller": "3.0.0-preview-e0caebb",
"@metamask-previews/signature-controller": "37.0.0-preview-e0caebb",
"@metamask-previews/subscription-controller": "5.0.0-preview-e0caebb",
"@metamask-previews/token-search-discovery-controller": "4.0.0-preview-e0caebb",
"@metamask-previews/transaction-controller": "62.0.0-preview-e0caebb",
"@metamask-previews/transaction-pay-controller": "10.0.0-preview-e0caebb",
"@metamask-previews/user-operation-controller": "41.0.0-preview-e0caebb"
}
@metamaskbot publish-preview