diff --git a/packages/signature-controller/package.json b/packages/signature-controller/package.json index e0661ebc60..2204b47d18 100644 --- a/packages/signature-controller/package.json +++ b/packages/signature-controller/package.json @@ -44,7 +44,6 @@ "@metamask/base-controller": "^6.0.2", "@metamask/controller-utils": "^11.0.2", "@metamask/message-manager": "^10.0.2", - "@metamask/rpc-errors": "^6.3.1", "@metamask/utils": "^9.1.0", "lodash": "^4.17.21" }, diff --git a/packages/signature-controller/src/SignatureController.test.ts b/packages/signature-controller/src/SignatureController.test.ts index 1cf29e035c..df34cdb3c4 100644 --- a/packages/signature-controller/src/SignatureController.test.ts +++ b/packages/signature-controller/src/SignatureController.test.ts @@ -12,7 +12,6 @@ import { PersonalMessageManager, TypedMessageManager, } from '@metamask/message-manager'; -import { EthereumProviderError } from '@metamask/rpc-errors'; import type { SignatureControllerMessenger, @@ -368,18 +367,23 @@ describe('SignatureController', () => { it('throws if approval rejected', async () => { messengerMock.call .mockResolvedValueOnce({}) // LoggerController:add - .mockRejectedValueOnce({}); // ApprovalController:addRequest + .mockRejectedValueOnce({ + message: 'User rejected the request.', + data: { + source: 'MetaMask', + }, + }); // ApprovalController:addRequest // TODO: Replace `any` with type // eslint-disable-next-line @typescript-eslint/no-explicit-any - const error: any = await getError( + const error: any = await getError( async () => await signatureController.newUnsignedPersonalMessage( messageParamsMock, requestMock, ), ); - expect(error instanceof EthereumProviderError).toBe(true); expect(error.message).toBe('User rejected the request.'); + expect(error.data).toStrictEqual({ source: 'MetaMask' }); }); it('throws if cannot get signature', async () => { @@ -521,10 +525,13 @@ describe('SignatureController', () => { it('throws if approval rejected', async () => { messengerMock.call .mockResolvedValueOnce({}) // LoggerController:add - .mockRejectedValueOnce({}); // ApprovalController:addRequest + .mockRejectedValueOnce({ + message: 'User rejected the request.', + data: { source: 'Metamask' }, + }); // ApprovalController:addRequest // TODO: Replace `any` with type // eslint-disable-next-line @typescript-eslint/no-explicit-any - const error: any = await getError( + const error: any = await getError( async () => await signatureController.newUnsignedTypedMessage( messageParamsMock, @@ -533,8 +540,8 @@ describe('SignatureController', () => { { parseJsonData: true }, ), ); - expect(error instanceof EthereumProviderError).toBe(true); expect(error.message).toBe('User rejected the request.'); + expect(error.data).toStrictEqual({ source: 'Metamask' }); }); it('throws if cannot get signature', async () => { diff --git a/packages/signature-controller/src/SignatureController.ts b/packages/signature-controller/src/SignatureController.ts index b1451bbabf..24a7abab10 100644 --- a/packages/signature-controller/src/SignatureController.ts +++ b/packages/signature-controller/src/SignatureController.ts @@ -40,7 +40,6 @@ import { PersonalMessageManager, TypedMessageManager, } from '@metamask/message-manager'; -import { providerErrors } from '@metamask/rpc-errors'; import type { Hex, Json } from '@metamask/utils'; import EventEmitter from 'events'; import { cloneDeep } from 'lodash'; @@ -432,7 +431,7 @@ export class SignatureController extends BaseController< ); resultCallbacks = acceptResult.resultCallbacks; - } catch { + } catch (error) { // User rejected the signature request this.#addLog( signTypeForLogger, @@ -441,7 +440,7 @@ export class SignatureController extends BaseController< ); this.#cancelAbstractMessage(messageManager, messageId); - throw providerErrors.userRejectedRequest('User rejected the request.'); + throw error; } // TODO: Either fix this lint violation or explain why it's necessary to ignore. diff --git a/yarn.lock b/yarn.lock index b24ee4f62e..fd9336b63f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3711,7 +3711,6 @@ __metadata: "@metamask/keyring-controller": "npm:^17.1.2" "@metamask/logging-controller": "npm:^5.0.0" "@metamask/message-manager": "npm:^10.0.2" - "@metamask/rpc-errors": "npm:^6.3.1" "@metamask/utils": "npm:^9.1.0" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2"