Skip to content

Commit 18fb3a3

Browse files
committed
refactor: migrate UserOperationController to @metamask/messenger
1 parent 6abc7a2 commit 18fb3a3

File tree

6 files changed

+37
-19
lines changed

6 files changed

+37
-19
lines changed

packages/user-operation-controller/CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313

1414
### Changed
1515

16+
- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6494](https://github.com/MetaMask/core/pull/6494))
17+
- Previously, `UserOperationController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`.
18+
- Bump `@metamask/utils` from `^11.4.2` to `^11.8.0` ([#6588](https://github.com/MetaMask/core/pull/6588))
1619
- Bump `@metamask/controller-utils` from `^11.12.0` to `^11.14.0` ([#6620](https://github.com/MetaMask/core/pull/6620), [#6629](https://github.com/MetaMask/core/pull/6629))
1720
- Bump `@metamask/base-controller` from `^8.1.0` to `^8.4.0` ([#6355](https://github.com/MetaMask/core/pull/6355), [#6465](https://github.com/MetaMask/core/pull/6465), [#6632](https://github.com/MetaMask/core/pull/6632))
18-
- Bump `@metamask/utils` from `^11.4.2` to `^11.8.0` ([#6588](https://github.com/MetaMask/core/pull/6588))
1921

2022
## [39.0.0]
2123

packages/user-operation-controller/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"@metamask/base-controller": "^8.4.0",
5252
"@metamask/controller-utils": "^11.14.0",
5353
"@metamask/eth-query": "^4.0.0",
54+
"@metamask/messenger": "^0.2.0",
5455
"@metamask/polling-controller": "^14.0.0",
5556
"@metamask/rpc-errors": "^7.0.2",
5657
"@metamask/superstruct": "^3.1.0",

packages/user-operation-controller/src/UserOperationController.ts

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ import type {
33
AddApprovalRequest,
44
AddResult,
55
} from '@metamask/approval-controller';
6-
import type { RestrictedMessenger } from '@metamask/base-controller';
7-
import { BaseController } from '@metamask/base-controller';
6+
import {
7+
BaseController,
8+
type ControllerGetStateAction,
9+
type ControllerStateChangeEvent,
10+
} from '@metamask/base-controller/next';
811
import { ApprovalType } from '@metamask/controller-utils';
912
import EthQuery from '@metamask/eth-query';
1013
import type { GasFeeState } from '@metamask/gas-fee-controller';
@@ -13,6 +16,7 @@ import type {
1316
KeyringControllerPatchUserOperationAction,
1417
KeyringControllerSignUserOperationAction,
1518
} from '@metamask/keyring-controller';
19+
import type { Messenger } from '@metamask/messenger';
1620
import type {
1721
NetworkControllerGetNetworkClientByIdAction,
1822
Provider,
@@ -28,7 +32,6 @@ import { add0x } from '@metamask/utils';
2832
// This package purposefully relies on Node's EventEmitter module.
2933
// eslint-disable-next-line import-x/no-nodejs-modules
3034
import EventEmitter from 'events';
31-
import type { Patch } from 'immer';
3235
import { cloneDeep } from 'lodash';
3336
import { v1 as random } from 'uuid';
3437

@@ -102,15 +105,15 @@ export type UserOperationControllerState = {
102105
userOperations: Record<string, UserOperationMetadata>;
103106
};
104107

105-
export type GetUserOperationState = {
106-
type: `${typeof controllerName}:getState`;
107-
handler: () => UserOperationControllerState;
108-
};
108+
export type GetUserOperationState = ControllerGetStateAction<
109+
typeof controllerName,
110+
UserOperationControllerState
111+
>;
109112

110-
export type UserOperationStateChange = {
111-
type: `${typeof controllerName}:stateChange`;
112-
payload: [UserOperationControllerState, Patch[]];
113-
};
113+
export type UserOperationStateChange = ControllerStateChangeEvent<
114+
typeof controllerName,
115+
UserOperationControllerState
116+
>;
114117

115118
export type UserOperationControllerActions =
116119
| GetUserOperationState
@@ -122,12 +125,10 @@ export type UserOperationControllerActions =
122125

123126
export type UserOperationControllerEvents = UserOperationStateChange;
124127

125-
export type UserOperationControllerMessenger = RestrictedMessenger<
128+
export type UserOperationControllerMessenger = Messenger<
126129
typeof controllerName,
127130
UserOperationControllerActions,
128-
UserOperationControllerEvents,
129-
UserOperationControllerActions['type'],
130-
UserOperationControllerEvents['type']
131+
UserOperationControllerEvents
131132
>;
132133

133134
export type UserOperationControllerOptions = {
@@ -339,7 +340,7 @@ export class UserOperationController extends BaseController<
339340

340341
const smartContractAccount =
341342
requestSmartContractAccount ??
342-
new SnapSmartContractAccount(this.messagingSystem);
343+
new SnapSmartContractAccount(this.messenger);
343344

344345
const cache: UserOperationCache = {
345346
chainId,
@@ -739,7 +740,7 @@ export class UserOperationController extends BaseController<
739740
const type = ApprovalType.Transaction;
740741
const requestData = { txId: id };
741742

742-
return (await this.messagingSystem.call(
743+
return (await this.messenger.call(
743744
'ApprovalController:addRequest',
744745
{
745746
id,
@@ -774,7 +775,7 @@ export class UserOperationController extends BaseController<
774775
async #getProvider(
775776
networkClientId: string,
776777
): Promise<{ provider: Provider; chainId: string }> {
777-
const { provider, configuration } = this.messagingSystem.call(
778+
const { provider, configuration } = this.messenger.call(
778779
'NetworkController:getNetworkClientById',
779780
networkClientId,
780781
);

packages/user-operation-controller/tsconfig.build.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
},
2727
{
2828
"path": "../transaction-controller/tsconfig.build.json"
29+
},
30+
{
31+
"path": "../messenger/tsconfig.build.json"
2932
}
3033
],
3134
"include": ["../../types", "./src"]

packages/user-operation-controller/tsconfig.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
},
2525
{
2626
"path": "../transaction-controller"
27+
},
28+
{
29+
"path": "../messenger"
2730
}
2831
],
2932
"include": ["../../types", "./src"]

yarn.lock

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3822,6 +3822,13 @@ __metadata:
38223822
languageName: unknown
38233823
linkType: soft
38243824

3825+
"@metamask/messenger@npm:^0.2.0":
3826+
version: 0.2.0
3827+
resolution: "@metamask/messenger@npm:0.2.0"
3828+
checksum: 10/48f682d9cde1208fbda0936022dea37acc3828cc221203b5f917df25c131d9a250dc5e86e9263f5dba8ee7c05adc6752a68dfb57da7d297f95f38b052f4fe5c1
3829+
languageName: node
3830+
linkType: hard
3831+
38253832
"@metamask/messenger@npm:^0.3.0, @metamask/messenger@workspace:packages/messenger":
38263833
version: 0.0.0-use.local
38273834
resolution: "@metamask/messenger@workspace:packages/messenger"
@@ -4830,6 +4837,7 @@ __metadata:
48304837
"@metamask/eth-query": "npm:^4.0.0"
48314838
"@metamask/gas-fee-controller": "npm:^24.0.0"
48324839
"@metamask/keyring-controller": "npm:^23.1.0"
4840+
"@metamask/messenger": "npm:^0.2.0"
48334841
"@metamask/network-controller": "npm:^24.2.0"
48344842
"@metamask/polling-controller": "npm:^14.0.0"
48354843
"@metamask/rpc-errors": "npm:^7.0.2"

0 commit comments

Comments
 (0)