Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ linkStyle default opacity:0.5
address_book_controller --> controller_utils;
address_book_controller --> messenger;
announcement_controller --> base_controller;
announcement_controller --> messenger;
app_metadata_controller --> base_controller;
approval_controller --> base_controller;
assets_controllers --> base_controller;
Expand Down
6 changes: 6 additions & 0 deletions packages/announcement-controller/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6384](https://github.com/MetaMask/core/pull/6384))
- Previously, `AnnouncementController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`.
- **BREAKING:** Metadata property `anonymous` renamed to `includeInDebugSnapshot` ([#6384](https://github.com/MetaMask/core/pull/6384))

## [7.1.1]

### Changed
Expand Down
3 changes: 2 additions & 1 deletion packages/announcement-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
"@metamask/base-controller": "^8.4.2"
"@metamask/base-controller": "^8.4.2",
"@metamask/messenger": "^0.3.0"
},
"devDependencies": {
"@metamask/auto-changelog": "^3.4.4",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { Messenger, deriveStateFromMetadata } from '@metamask/base-controller';
import { deriveStateFromMetadata } from '@metamask/base-controller/next';
import {
Messenger,
MOCK_ANY_NAMESPACE,
type MockAnyNamespace,
} from '@metamask/messenger';

import type {
AnnouncementControllerState,
Expand All @@ -16,15 +21,20 @@ const name = 'AnnouncementController';
*
* @returns A restricted controller messenger.
*/
function getRestrictedMessenger() {
function getMessenger() {
const messenger = new Messenger<
MockAnyNamespace,
AnnouncementControllerActions,
AnnouncementControllerEvents
>();
return messenger.getRestricted({
name,
allowedActions: [],
allowedEvents: [],
>({ namespace: MOCK_ANY_NAMESPACE });
return new Messenger<
typeof name,
AnnouncementControllerActions,
AnnouncementControllerEvents,
typeof messenger
>({
namespace: name,
parent: messenger,
});
}
const allAnnouncements: AnnouncementMap = {
Expand Down Expand Up @@ -89,7 +99,7 @@ const state2: AnnouncementControllerState = {
describe('announcement controller', () => {
it('should add announcement to state', () => {
const controller = new AnnouncementController({
messenger: getRestrictedMessenger(),
messenger: getMessenger(),
allAnnouncements,
});
expect(Object.keys(controller.state.announcements)).toHaveLength(2);
Expand All @@ -110,7 +120,7 @@ describe('announcement controller', () => {

it('should add new announcement to state and a new announcement should be created with isShown as false', () => {
const controller = new AnnouncementController({
messenger: getRestrictedMessenger(),
messenger: getMessenger(),
state: state1,
allAnnouncements: allAnnouncements2,
});
Expand All @@ -123,7 +133,7 @@ describe('announcement controller', () => {
describe('resetViewed', () => {
it('resets all announcement isShown states to false', () => {
const controller = new AnnouncementController({
messenger: getRestrictedMessenger(),
messenger: getMessenger(),
state: state2,
allAnnouncements: allAnnouncements2,
});
Expand All @@ -142,7 +152,7 @@ describe('announcement controller', () => {
describe('update viewed announcements', () => {
it('should update isShown status', () => {
const controller = new AnnouncementController({
messenger: getRestrictedMessenger(),
messenger: getMessenger(),
state: state2,
allAnnouncements: allAnnouncements2,
});
Expand All @@ -154,7 +164,7 @@ describe('announcement controller', () => {

it('should update isShown of more than one announcement', () => {
const controller = new AnnouncementController({
messenger: getRestrictedMessenger(),
messenger: getMessenger(),
state: state2,
allAnnouncements: allAnnouncements2,
});
Expand All @@ -168,15 +178,15 @@ describe('announcement controller', () => {
describe('metadata', () => {
it('includes expected state in debug snapshots', () => {
const controller = new AnnouncementController({
messenger: getRestrictedMessenger(),
messenger: getMessenger(),
allAnnouncements,
});

expect(
deriveStateFromMetadata(
controller.state,
controller.metadata,
'anonymous',
'includeInDebugSnapshot',
),
).toMatchInlineSnapshot(`
Object {
Expand All @@ -198,7 +208,7 @@ describe('announcement controller', () => {

it('includes expected state in state logs', () => {
const controller = new AnnouncementController({
messenger: getRestrictedMessenger(),
messenger: getMessenger(),
allAnnouncements,
});

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

it('persists expected state', () => {
const controller = new AnnouncementController({
messenger: getRestrictedMessenger(),
messenger: getMessenger(),
allAnnouncements,
});

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

it('exposes expected state to UI', () => {
const controller = new AnnouncementController({
messenger: getRestrictedMessenger(),
messenger: getMessenger(),
allAnnouncements,
});

Expand Down
14 changes: 6 additions & 8 deletions packages/announcement-controller/src/AnnouncementController.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import type {
ControllerGetStateAction,
ControllerStateChangeEvent,
RestrictedMessenger,
StateMetadata,
} from '@metamask/base-controller';
import { BaseController } from '@metamask/base-controller';
} from '@metamask/base-controller/next';
import { BaseController } from '@metamask/base-controller/next';
import type { Messenger } from '@metamask/messenger';

type ViewedAnnouncement = {
[id: number]: boolean;
Expand Down Expand Up @@ -64,17 +64,15 @@ const metadata: StateMetadata<AnnouncementControllerState> = {
announcements: {
includeInStateLogs: true,
persist: true,
anonymous: true,
includeInDebugSnapshot: true,
usedInUi: true,
},
};

export type AnnouncementControllerMessenger = RestrictedMessenger<
export type AnnouncementControllerMessenger = Messenger<
typeof controllerName,
AnnouncementControllerActions,
AnnouncementControllerEvents,
never,
never
AnnouncementControllerEvents
>;

/**
Expand Down
5 changes: 4 additions & 1 deletion packages/announcement-controller/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
"outDir": "./dist",
"rootDir": "./src"
},
"references": [{ "path": "../base-controller/tsconfig.build.json" }],
"references": [
{ "path": "../base-controller/tsconfig.build.json" },
{ "path": "../messenger/tsconfig.build.json" }
],
"include": ["../../types", "./src"]
}
2 changes: 1 addition & 1 deletion packages/announcement-controller/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
"compilerOptions": {
"baseUrl": "./"
},
"references": [{ "path": "../base-controller" }],
"references": [{ "path": "../base-controller" }, { "path": "../messenger" }],
"include": ["../../types", "./src"]
}
1 change: 1 addition & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2686,6 +2686,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^3.4.4"
"@metamask/base-controller": "npm:^8.4.2"
"@metamask/messenger": "npm:^0.3.0"
"@types/jest": "npm:^27.4.1"
deepmerge: "npm:^4.2.2"
jest: "npm:^27.5.1"
Expand Down
Loading