Skip to content

Commit 0f3227f

Browse files
authored
refactor: migrate AnnouncementController to @metamask/messenger (#6384)
## Explanation <!-- Thanks for your contribution! Take a moment to answer these questions so that reviewers have the information they need to properly understand your changes: * What is the current state of things and why does it need to change? * What is the solution your changes offer and how does it work? * Are there any changes whose purpose might not obvious to those unfamiliar with the domain? * If your primary goal was to update one package but you found you had to update another one along the way, why did you do so? * If you had to upgrade a dependency, why did you do so? --> This PR migrates the `AnnouncementController` class to the new `@metamask/messenger` comm system, as opposed to the one exported from `@metamask/base-controller`. ## References <!-- Are there any issues that this pull request is tied to? Are there other links that reviewers should consult to understand these changes better? Are there client or consumer pull requests to adopt any breaking changes? For example: * Fixes #12345 * Related to #67890 --> * Related to #5626 ## Checklist - [ ] I've updated the test suite for new or updated code as appropriate - [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate - [ ] I've communicated my changes to consumers by [updating changelogs for packages I've changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs), highlighting breaking changes as necessary - [ ] I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes
1 parent 6de2b6d commit 0f3227f

File tree

8 files changed

+48
-28
lines changed

8 files changed

+48
-28
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ linkStyle default opacity:0.5
162162
address_book_controller --> controller_utils;
163163
address_book_controller --> messenger;
164164
announcement_controller --> base_controller;
165+
announcement_controller --> messenger;
165166
app_metadata_controller --> base_controller;
166167
approval_controller --> base_controller;
167168
assets_controllers --> base_controller;

packages/announcement-controller/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Changed
11+
12+
- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6384](https://github.com/MetaMask/core/pull/6384))
13+
- Previously, `AnnouncementController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`.
14+
- **BREAKING:** Metadata property `anonymous` renamed to `includeInDebugSnapshot` ([#6384](https://github.com/MetaMask/core/pull/6384))
15+
1016
## [7.1.1]
1117

1218
### Changed

packages/announcement-controller/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@
4747
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
4848
},
4949
"dependencies": {
50-
"@metamask/base-controller": "^8.4.2"
50+
"@metamask/base-controller": "^8.4.2",
51+
"@metamask/messenger": "^0.3.0"
5152
},
5253
"devDependencies": {
5354
"@metamask/auto-changelog": "^3.4.4",

packages/announcement-controller/src/AnnouncementController.test.ts

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { Messenger, deriveStateFromMetadata } from '@metamask/base-controller';
1+
import { deriveStateFromMetadata } from '@metamask/base-controller/next';
2+
import {
3+
Messenger,
4+
MOCK_ANY_NAMESPACE,
5+
type MockAnyNamespace,
6+
} from '@metamask/messenger';
27

38
import type {
49
AnnouncementControllerState,
@@ -16,15 +21,20 @@ const name = 'AnnouncementController';
1621
*
1722
* @returns A restricted controller messenger.
1823
*/
19-
function getRestrictedMessenger() {
24+
function getMessenger() {
2025
const messenger = new Messenger<
26+
MockAnyNamespace,
2127
AnnouncementControllerActions,
2228
AnnouncementControllerEvents
23-
>();
24-
return messenger.getRestricted({
25-
name,
26-
allowedActions: [],
27-
allowedEvents: [],
29+
>({ namespace: MOCK_ANY_NAMESPACE });
30+
return new Messenger<
31+
typeof name,
32+
AnnouncementControllerActions,
33+
AnnouncementControllerEvents,
34+
typeof messenger
35+
>({
36+
namespace: name,
37+
parent: messenger,
2838
});
2939
}
3040
const allAnnouncements: AnnouncementMap = {
@@ -89,7 +99,7 @@ const state2: AnnouncementControllerState = {
8999
describe('announcement controller', () => {
90100
it('should add announcement to state', () => {
91101
const controller = new AnnouncementController({
92-
messenger: getRestrictedMessenger(),
102+
messenger: getMessenger(),
93103
allAnnouncements,
94104
});
95105
expect(Object.keys(controller.state.announcements)).toHaveLength(2);
@@ -110,7 +120,7 @@ describe('announcement controller', () => {
110120

111121
it('should add new announcement to state and a new announcement should be created with isShown as false', () => {
112122
const controller = new AnnouncementController({
113-
messenger: getRestrictedMessenger(),
123+
messenger: getMessenger(),
114124
state: state1,
115125
allAnnouncements: allAnnouncements2,
116126
});
@@ -123,7 +133,7 @@ describe('announcement controller', () => {
123133
describe('resetViewed', () => {
124134
it('resets all announcement isShown states to false', () => {
125135
const controller = new AnnouncementController({
126-
messenger: getRestrictedMessenger(),
136+
messenger: getMessenger(),
127137
state: state2,
128138
allAnnouncements: allAnnouncements2,
129139
});
@@ -142,7 +152,7 @@ describe('announcement controller', () => {
142152
describe('update viewed announcements', () => {
143153
it('should update isShown status', () => {
144154
const controller = new AnnouncementController({
145-
messenger: getRestrictedMessenger(),
155+
messenger: getMessenger(),
146156
state: state2,
147157
allAnnouncements: allAnnouncements2,
148158
});
@@ -154,7 +164,7 @@ describe('announcement controller', () => {
154164

155165
it('should update isShown of more than one announcement', () => {
156166
const controller = new AnnouncementController({
157-
messenger: getRestrictedMessenger(),
167+
messenger: getMessenger(),
158168
state: state2,
159169
allAnnouncements: allAnnouncements2,
160170
});
@@ -168,15 +178,15 @@ describe('announcement controller', () => {
168178
describe('metadata', () => {
169179
it('includes expected state in debug snapshots', () => {
170180
const controller = new AnnouncementController({
171-
messenger: getRestrictedMessenger(),
181+
messenger: getMessenger(),
172182
allAnnouncements,
173183
});
174184

175185
expect(
176186
deriveStateFromMetadata(
177187
controller.state,
178188
controller.metadata,
179-
'anonymous',
189+
'includeInDebugSnapshot',
180190
),
181191
).toMatchInlineSnapshot(`
182192
Object {
@@ -198,7 +208,7 @@ describe('announcement controller', () => {
198208

199209
it('includes expected state in state logs', () => {
200210
const controller = new AnnouncementController({
201-
messenger: getRestrictedMessenger(),
211+
messenger: getMessenger(),
202212
allAnnouncements,
203213
});
204214

@@ -228,7 +238,7 @@ describe('announcement controller', () => {
228238

229239
it('persists expected state', () => {
230240
const controller = new AnnouncementController({
231-
messenger: getRestrictedMessenger(),
241+
messenger: getMessenger(),
232242
allAnnouncements,
233243
});
234244

@@ -258,7 +268,7 @@ describe('announcement controller', () => {
258268

259269
it('exposes expected state to UI', () => {
260270
const controller = new AnnouncementController({
261-
messenger: getRestrictedMessenger(),
271+
messenger: getMessenger(),
262272
allAnnouncements,
263273
});
264274

packages/announcement-controller/src/AnnouncementController.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type {
22
ControllerGetStateAction,
33
ControllerStateChangeEvent,
4-
RestrictedMessenger,
54
StateMetadata,
6-
} from '@metamask/base-controller';
7-
import { BaseController } from '@metamask/base-controller';
5+
} from '@metamask/base-controller/next';
6+
import { BaseController } from '@metamask/base-controller/next';
7+
import type { Messenger } from '@metamask/messenger';
88

99
type ViewedAnnouncement = {
1010
[id: number]: boolean;
@@ -64,17 +64,15 @@ const metadata: StateMetadata<AnnouncementControllerState> = {
6464
announcements: {
6565
includeInStateLogs: true,
6666
persist: true,
67-
anonymous: true,
67+
includeInDebugSnapshot: true,
6868
usedInUi: true,
6969
},
7070
};
7171

72-
export type AnnouncementControllerMessenger = RestrictedMessenger<
72+
export type AnnouncementControllerMessenger = Messenger<
7373
typeof controllerName,
7474
AnnouncementControllerActions,
75-
AnnouncementControllerEvents,
76-
never,
77-
never
75+
AnnouncementControllerEvents
7876
>;
7977

8078
/**

packages/announcement-controller/tsconfig.build.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
"outDir": "./dist",
66
"rootDir": "./src"
77
},
8-
"references": [{ "path": "../base-controller/tsconfig.build.json" }],
8+
"references": [
9+
{ "path": "../base-controller/tsconfig.build.json" },
10+
{ "path": "../messenger/tsconfig.build.json" }
11+
],
912
"include": ["../../types", "./src"]
1013
}

packages/announcement-controller/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
"compilerOptions": {
44
"baseUrl": "./"
55
},
6-
"references": [{ "path": "../base-controller" }],
6+
"references": [{ "path": "../base-controller" }, { "path": "../messenger" }],
77
"include": ["../../types", "./src"]
88
}

yarn.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2686,6 +2686,7 @@ __metadata:
26862686
dependencies:
26872687
"@metamask/auto-changelog": "npm:^3.4.4"
26882688
"@metamask/base-controller": "npm:^8.4.2"
2689+
"@metamask/messenger": "npm:^0.3.0"
26892690
"@types/jest": "npm:^27.4.1"
26902691
deepmerge: "npm:^4.2.2"
26912692
jest: "npm:^27.5.1"

0 commit comments

Comments
 (0)