Skip to content

Commit a16ceff

Browse files
committed
refactor: migrate PermissionLogController to @metamask/messenger
1 parent 675e518 commit a16ceff

File tree

6 files changed

+88
-17
lines changed

6 files changed

+88
-17
lines changed

packages/permission-log-controller/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
### Added
1111

1212
- Add two new controller state metadata properties: `includeInStateLogs` and `usedInUi` ([#6525](https://github.com/MetaMask/core/pull/6525))
13+
- Export new Messenger action/event types: `PermissionLogControllerActions`, `PermissionLogControllerGetStateAction`, `PermissionLogControllerEvents`, and `PermissionLogControllerStateChangeEvent` ([#6536](https://github.com/MetaMask/core/pull/6536))
1314

1415
### Changed
1516

17+
- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6536](https://github.com/MetaMask/core/pull/6536))
18+
- Previously, `PermissionLogController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`.
1619
- Bump `@metamask/utils` from `^11.4.2` to `^11.8.1` ([#6588](https://github.com/MetaMask/core/pull/6588), [#6708](https://github.com/MetaMask/core/pull/6708))
1720
- Bump `@metamask/base-controller` from `^8.0.1` to `^8.4.0` ([#6284](https://github.com/MetaMask/core/pull/6284), [#6355](https://github.com/MetaMask/core/pull/6355), [#6465](https://github.com/MetaMask/core/pull/6465), [#6632](https://github.com/MetaMask/core/pull/6632))
1821
- Bump `@metamask/json-rpc-engine` from `^10.0.3` to `^10.1.0` ([#6678](https://github.com/MetaMask/core/pull/6678))

packages/permission-log-controller/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
"dependencies": {
5050
"@metamask/base-controller": "^8.4.0",
5151
"@metamask/json-rpc-engine": "^10.1.0",
52+
"@metamask/messenger": "^0.3.0",
5253
"@metamask/utils": "^11.8.1"
5354
},
5455
"devDependencies": {

packages/permission-log-controller/src/PermissionLogController.ts

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import {
22
BaseController,
3-
type RestrictedMessenger,
4-
} from '@metamask/base-controller';
3+
type ControllerGetStateAction,
4+
type ControllerStateChangeEvent,
5+
} from '@metamask/base-controller/next';
56
import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';
7+
import type { Messenger } from '@metamask/messenger';
68
import {
79
type Json,
810
type JsonRpcRequest,
@@ -70,12 +72,24 @@ export type PermissionLogControllerOptions = {
7072
messenger: PermissionLogControllerMessenger;
7173
};
7274

73-
export type PermissionLogControllerMessenger = RestrictedMessenger<
75+
export type PermissionLogControllerGetStateAction = ControllerGetStateAction<
7476
typeof name,
75-
never,
76-
never,
77-
never,
78-
never
77+
PermissionLogControllerState
78+
>;
79+
80+
export type PermissionLogControllerActions =
81+
PermissionLogControllerGetStateAction;
82+
83+
export type PermissionLogControllerStateChangeEvent =
84+
ControllerStateChangeEvent<typeof name, PermissionLogControllerState>;
85+
86+
export type PermissionLogControllerEvents =
87+
PermissionLogControllerStateChangeEvent;
88+
89+
export type PermissionLogControllerMessenger = Messenger<
90+
typeof name,
91+
PermissionLogControllerActions,
92+
PermissionLogControllerEvents
7993
>;
8094

8195
const defaultState: PermissionLogControllerState = {
@@ -108,13 +122,13 @@ export class PermissionLogController extends BaseController<
108122
permissionHistory: {
109123
includeInStateLogs: true,
110124
persist: true,
111-
anonymous: false,
125+
includeInDebugSnapshot: false,
112126
usedInUi: true,
113127
},
114128
permissionActivityLog: {
115129
includeInStateLogs: true,
116130
persist: false,
117-
anonymous: false,
131+
includeInDebugSnapshot: false,
118132
usedInUi: false,
119133
},
120134
},
Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,17 @@
1-
export * from './PermissionLogController';
1+
export { PermissionLogController } from './PermissionLogController';
2+
export type {
3+
JsonRpcRequestWithOrigin,
4+
Caveat,
5+
Permission,
6+
PermissionActivityLog,
7+
PermissionLog,
8+
PermissionEntry,
9+
PermissionHistory,
10+
PermissionLogControllerActions,
11+
PermissionLogControllerGetStateAction,
12+
PermissionLogControllerStateChangeEvent,
13+
PermissionLogControllerEvents,
14+
PermissionLogControllerMessenger,
15+
PermissionLogControllerState,
16+
PermissionLogControllerOptions,
17+
} from './PermissionLogController';

packages/permission-log-controller/tests/PermissionLogController.test.ts

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
import { Messenger, deriveStateFromMetadata } from '@metamask/base-controller';
1+
import { deriveStateFromMetadata } from '@metamask/base-controller/next';
22
import type {
33
JsonRpcEngineReturnHandler,
44
JsonRpcEngineNextCallback,
55
} from '@metamask/json-rpc-engine';
6+
import {
7+
Messenger,
8+
MOCK_ANY_NAMESPACE,
9+
type MessengerActions,
10+
type MessengerEvents,
11+
type MockAnyNamespace,
12+
} from '@metamask/messenger';
613
import {
714
type PendingJsonRpcResponse,
815
type JsonRpcRequest,
@@ -13,9 +20,10 @@ import { nanoid } from 'nanoid';
1320
import { constants, getters, noop } from './helpers';
1421
import { LOG_LIMIT, LOG_METHOD_TYPES } from '../src/enums';
1522
import {
23+
PermissionLogController,
1624
type Permission,
1725
type PermissionLogControllerState,
18-
PermissionLogController,
26+
type PermissionLogControllerMessenger,
1927
} from '../src/PermissionLogController';
2028

2129
const { PERMS, RPC_REQUESTS } = getters;
@@ -33,17 +41,45 @@ class CustomError extends Error {
3341

3442
const name = 'PermissionLogController';
3543

44+
type AllPermissionLogControllerActions =
45+
MessengerActions<PermissionLogControllerMessenger>;
46+
47+
type AllPermissionLogControllerEvents =
48+
MessengerEvents<PermissionLogControllerMessenger>;
49+
50+
type RootMessenger = Messenger<
51+
MockAnyNamespace,
52+
AllPermissionLogControllerActions,
53+
AllPermissionLogControllerEvents
54+
>;
55+
56+
/**
57+
* Creates and returns a root messenger for testing
58+
*
59+
* @returns A messenger instance
60+
*/
61+
function getRootMessenger(): RootMessenger {
62+
return new Messenger({
63+
namespace: MOCK_ANY_NAMESPACE,
64+
});
65+
}
66+
3667
const initController = ({
3768
restrictedMethods,
3869
state,
3970
}: {
4071
restrictedMethods: Set<string>;
4172
state?: Partial<PermissionLogControllerState>;
4273
}): PermissionLogController => {
43-
const messenger = new Messenger().getRestricted({
44-
name,
45-
allowedActions: [],
46-
allowedEvents: [],
74+
const rootMessenger = getRootMessenger();
75+
const messenger = new Messenger<
76+
typeof name,
77+
AllPermissionLogControllerActions,
78+
AllPermissionLogControllerEvents,
79+
RootMessenger
80+
>({
81+
namespace: name,
82+
parent: rootMessenger,
4783
});
4884
return new PermissionLogController({
4985
messenger,
@@ -824,7 +860,7 @@ describe('PermissionLogController', () => {
824860
deriveStateFromMetadata(
825861
controller.state,
826862
controller.metadata,
827-
'anonymous',
863+
'includeInDebugSnapshot',
828864
),
829865
).toMatchInlineSnapshot(`Object {}`);
830866
});

yarn.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4176,6 +4176,7 @@ __metadata:
41764176
"@metamask/auto-changelog": "npm:^3.4.4"
41774177
"@metamask/base-controller": "npm:^8.4.0"
41784178
"@metamask/json-rpc-engine": "npm:^10.1.0"
4179+
"@metamask/messenger": "npm:^0.3.0"
41794180
"@metamask/utils": "npm:^11.8.1"
41804181
"@types/deep-freeze-strict": "npm:^1.1.0"
41814182
"@types/jest": "npm:^27.4.1"

0 commit comments

Comments
 (0)