diff --git a/.yarn/patches/@metamask-signature-controller-npm-4.0.1-013e64c9fd.patch b/.yarn/patches/@metamask-signature-controller-npm-4.0.1-013e64c9fd.patch new file mode 100644 index 000000000..ef3f75e9e --- /dev/null +++ b/.yarn/patches/@metamask-signature-controller-npm-4.0.1-013e64c9fd.patch @@ -0,0 +1,17 @@ +diff --git a/dist/SignatureController.js b/dist/SignatureController.js +index b58b27e84aa84393afb366d4585c084d0380d21d..0629bcf517db744ccfa40e4d7d8f2829fa95559e 100644 +--- a/dist/SignatureController.js ++++ b/dist/SignatureController.js +@@ -237,8 +237,11 @@ _SignatureController_keyringController = new WeakMap(), _SignatureController_isE + yield __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_requestApproval).call(this, messageParamsWithId, approvalType); + } + catch (error) { ++ signaturePromise.catch(() => { ++ // Expecting reject error but throwing manually rather than waiting ++ }); + __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_cancelAbstractMessage).call(this, messageManager, messageId); +- throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest('User rejected the request.'); ++ throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(`MetaMask ${messageName} Signature: User denied message signature.`); + } + yield signMessage(messageParamsWithId, version, signingOpts); + return signaturePromise; diff --git a/CHANGELOG.md b/CHANGELOG.md index ca6587539..208946bb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [10.34.0] +## [10.33.1] +### Fixed +- Fix to bug causing users to see an infinite spinner when signing typed messages. ([#19894](https://github.com/MetaMask/metamask-extension/pull/19894)) ## [10.33.0] ### Added @@ -3829,6 +3832,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v10.34.0...HEAD [10.33.0]: https://github.com/MetaMask/metamask-extension/compare/v10.33.0...v10.34.0 +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v10.33.1...HEAD +[10.33.1]: https://github.com/MetaMask/metamask-extension/compare/v10.33.0...v10.33.1 [10.33.0]: https://github.com/MetaMask/metamask-extension/compare/v10.32.0...v10.33.0 [10.32.0]: https://github.com/MetaMask/metamask-extension/compare/v10.31.1...v10.32.0 [10.31.1]: https://github.com/MetaMask/metamask-extension/compare/v10.31.0...v10.31.1 diff --git a/package.json b/package.json index 5b7fd1fdd..8c04eefe8 100644 --- a/package.json +++ b/package.json @@ -195,7 +195,8 @@ "fast-json-patch@^3.1.1": "patch:fast-json-patch@npm%3A3.1.1#./.yarn/patches/fast-json-patch-npm-3.1.1-7e8bb70a45.patch", "request@^2.83.0": "patch:request@npm%3A2.88.2#./.yarn/patches/request-npm-2.88.2-f4a57c72c4.patch", "request@^2.88.2": "patch:request@npm%3A2.88.2#./.yarn/patches/request-npm-2.88.2-f4a57c72c4.patch", - "request@^2.85.0": "patch:request@npm%3A2.88.2#./.yarn/patches/request-npm-2.88.2-f4a57c72c4.patch" + "request@^2.85.0": "patch:request@npm%3A2.88.2#./.yarn/patches/request-npm-2.88.2-f4a57c72c4.patch", + "@metamask/signature-controller@^4.0.1": "patch:@metamask/signature-controller@npm%3A4.0.1#./.yarn/patches/@metamask-signature-controller-npm-4.0.1-013e64c9fd.patch" }, "dependencies": { "@babel/runtime": "^7.18.9", @@ -243,7 +244,7 @@ "@metamask/jazzicon": "^2.0.0", "@metamask/key-tree": "^7.0.0", "@metamask/logo": "^3.1.1", - "@metamask/message-manager": "^7.0.0", + "@metamask/message-manager": "^7.0.2", "@metamask/metamask-eth-abis": "^3.0.0", "@metamask/network-controller": "^10.1.0", "@metamask/notification-controller": "^3.0.0", diff --git a/shared/modules/transaction.utils.js b/shared/modules/transaction.utils.js index b07d1f869..44a681519 100644 --- a/shared/modules/transaction.utils.js +++ b/shared/modules/transaction.utils.js @@ -176,7 +176,7 @@ export async function determineTransactionType(txParams, query) { contractCode = resultCode; if (isContractAddress) { - const hasValue = txParams.value && txParams.value !== '0x0'; + const hasValue = txParams.value && Number(txParams.value) !== 0; const tokenMethodName = [ TransactionType.tokenMethodApprove, diff --git a/shared/modules/transaction.utils.test.js b/shared/modules/transaction.utils.test.js index 615fda2e3..242d10007 100644 --- a/shared/modules/transaction.utils.test.js +++ b/shared/modules/transaction.utils.test.js @@ -186,6 +186,20 @@ describe('Transaction.utils', function () { getCodeResponse: '0xab', }); + const resultWithEmptyValue2 = await determineTransactionType( + { + value: '0x0000', + to: '0x9e673399f795D01116e9A8B2dD2F156705131ee9', + data: '0xa9059cbb0000000000000000000000002f318C334780961FB129D2a6c30D0763d9a5C970000000000000000000000000000000000000000000000000000000000000000a', + }, + new EthQuery(_provider), + ); + + expect(resultWithEmptyValue2).toMatchObject({ + type: TransactionType.tokenMethodTransfer, + getCodeResponse: '0xab', + }); + const resultWithValue = await determineTransactionType( { value: '0x12345', diff --git a/ui/store/actions.ts b/ui/store/actions.ts index 509127bf6..5e12c3ae7 100644 --- a/ui/store/actions.ts +++ b/ui/store/actions.ts @@ -19,9 +19,12 @@ import { PayloadAction } from '@reduxjs/toolkit'; import { GasFeeController } from '@metamask/gas-fee-controller'; import { PermissionsRequest } from '@metamask/permission-controller'; import { NonEmptyArray } from '@metamask/controller-utils'; +<<<<<<< HEAD ///: BEGIN:ONLY_INCLUDE_IN(keyring-snaps) import { HandlerType } from '@metamask/snaps-utils'; ///: END:ONLY_INCLUDE_IN +======= +>>>>>>> master import { getMethodDataAsync } from '../helpers/utils/transactions.util'; import switchDirection from '../../shared/lib/switch-direction'; import { diff --git a/yarn.lock b/yarn.lock index 6c7da3567..a28073e73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4007,9 +4007,9 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^4.0.0, @metamask/controller-utils@npm:^4.0.1": - version: 4.0.1 - resolution: "@metamask/controller-utils@npm:4.0.1" +"@metamask/controller-utils@npm:^4.0.0, @metamask/controller-utils@npm:^4.0.1, @metamask/controller-utils@npm:^4.1.0": + version: 4.1.0 + resolution: "@metamask/controller-utils@npm:4.1.0" dependencies: "@metamask/utils": ^5.0.2 "@spruceid/siwe-parser": 1.1.3 @@ -4020,7 +4020,7 @@ __metadata: ethereumjs-util: ^7.0.10 ethjs-unit: ^0.1.6 fast-deep-equal: ^3.1.3 - checksum: c0c3b8b5a363aff6a7996e349f47fdc77d3b31846546dc937669a2ab2306c3ed3c2122cf682a1146c6ba3eeeabe491f8ba7aa0157d62843689242779bb506017 + checksum: b4975e6ca860b691931254aa749e8c4faddd04279609cf197155b38150e55da0e966bf9b2d61ee1cd070f79d16e0305d5a0ff1747e0b4ab2e1c3ab46ca84e4d7 languageName: node linkType: hard @@ -4355,19 +4355,19 @@ __metadata: languageName: node linkType: hard -"@metamask/message-manager@npm:^7.0.0": - version: 7.0.0 - resolution: "@metamask/message-manager@npm:7.0.0" +"@metamask/message-manager@npm:^7.0.0, @metamask/message-manager@npm:^7.0.2": + version: 7.0.2 + resolution: "@metamask/message-manager@npm:7.0.2" dependencies: "@metamask/base-controller": ^3.0.0 - "@metamask/controller-utils": ^4.0.0 + "@metamask/controller-utils": ^4.1.0 "@metamask/utils": ^5.0.2 "@types/uuid": ^8.3.0 eth-sig-util: ^3.0.0 ethereumjs-util: ^7.0.10 jsonschema: ^1.2.4 uuid: ^8.3.2 - checksum: 1a7b785159d93153ef966a82bcdf9beea1a641cd663d2c1719cf6b671364f18b98c84795d23fa9872ec5e2bd9f08162c2c4d7369f46a81d12fd496b6433818a0 + checksum: ee2f11a44fd7fae662aa72a0bfc02cb51327d1a42812c73aca291284a0dd2575836fd9e2a390e788da5e6515334e51863d839719762ceff65a56e60be14c046b languageName: node linkType: hard @@ -4705,7 +4705,7 @@ __metadata: languageName: node linkType: hard -"@metamask/signature-controller@npm:^4.0.1": +"@metamask/signature-controller@npm:4.0.1": version: 4.0.1 resolution: "@metamask/signature-controller@npm:4.0.1" dependencies: @@ -4724,6 +4724,25 @@ __metadata: languageName: node linkType: hard +"@metamask/signature-controller@patch:@metamask/signature-controller@npm%3A4.0.1#./.yarn/patches/@metamask-signature-controller-npm-4.0.1-013e64c9fd.patch::locator=metamask-crx%40workspace%3A.": + version: 4.0.1 + resolution: "@metamask/signature-controller@patch:@metamask/signature-controller@npm%3A4.0.1#./.yarn/patches/@metamask-signature-controller-npm-4.0.1-013e64c9fd.patch::version=4.0.1&hash=7f339b&locator=metamask-crx%40workspace%3A." + dependencies: + "@metamask/approval-controller": ^3.3.0 + "@metamask/base-controller": ^3.0.0 + "@metamask/controller-utils": ^4.0.0 + "@metamask/message-manager": ^7.0.0 + "@metamask/utils": ^5.0.2 + eth-rpc-errors: ^4.0.2 + ethereumjs-util: ^7.0.10 + immer: ^9.0.6 + lodash: ^4.17.21 + peerDependencies: + "@metamask/approval-controller": ^3.3.0 + checksum: d678cf1763cfe9e13c0e5d357fcc44bd4580efc44a6fdca61ba6eed059c47c780fafaf08a075466a4886fbb9c6332544752bf7d25d515a37213c800cfc181665 + languageName: node + linkType: hard + "@metamask/slip44@npm:^3.0.0": version: 3.0.0 resolution: "@metamask/slip44@npm:3.0.0" @@ -24508,7 +24527,7 @@ __metadata: "@metamask/jazzicon": ^2.0.0 "@metamask/key-tree": ^7.0.0 "@metamask/logo": ^3.1.1 - "@metamask/message-manager": ^7.0.0 + "@metamask/message-manager": ^7.0.2 "@metamask/metamask-eth-abis": ^3.0.0 "@metamask/network-controller": ^10.1.0 "@metamask/notification-controller": ^3.0.0