Skip to content
Open
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
2 changes: 2 additions & 0 deletions packages/message-manager/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6545](https://github.com/MetaMask/core/pull/6545))
- Previously, `AbstractMessageManager`, `DecryptMessageManager` and `EncryptionPublicKeyManager` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`.
- **BREAKING:** `AbstractMessageManager` now expects a `Name extends string` generic parameter to define the name of the message manager ([#6469](https://github.com/MetaMask/core/pull/6469))
- The type is used as namespace for `BaseController` and `Messenger` events and actions.
- Bump `@metamask/base-controller` from `^8.0.1` to `^8.3.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))
Expand Down
1 change: 1 addition & 0 deletions packages/message-manager/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"@metamask/base-controller": "^8.3.0",
"@metamask/controller-utils": "^11.12.0",
"@metamask/eth-sig-util": "^8.2.0",
"@metamask/messenger": "^0.2.0",
"@metamask/utils": "^11.4.2",
"@types/uuid": "^8.3.0",
"jsonschema": "^1.4.1",
Expand Down
10 changes: 2 additions & 8 deletions packages/message-manager/src/AbstractMessageManager.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { RestrictedMessenger } from '@metamask/base-controller';
import { ApprovalType } from '@metamask/controller-utils';
import type { Messenger } from '@metamask/messenger';

import type {
AbstractMessage,
Expand Down Expand Up @@ -68,13 +68,7 @@ const MOCK_MESSENGER = {
publish: jest.fn(),
registerActionHandler: jest.fn(),
registerInitialEventPayload: jest.fn(),
} as unknown as RestrictedMessenger<
'TestManager',
never,
never,
string,
string
>;
} as unknown as Messenger<'TestManager', never, never>;

const MOCK_INITIAL_OPTIONS = {
additionalFinishStatuses: undefined,
Expand Down
28 changes: 8 additions & 20 deletions packages/message-manager/src/AbstractMessageManager.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { BaseController } from '@metamask/base-controller';
import { BaseController } from '@metamask/base-controller/next';
import type { ApprovalType } from '@metamask/controller-utils';
import type {
ActionConstraint,
EventConstraint,
RestrictedMessenger,
} from '@metamask/base-controller';
import type { ApprovalType } from '@metamask/controller-utils';
Messenger,
} from '@metamask/messenger';
import type { Json } from '@metamask/utils';
// This package purposefully relies on Node's EventEmitter module.
// eslint-disable-next-line import-x/no-nodejs-modules
Expand Down Expand Up @@ -127,13 +127,7 @@ export type AbstractMessageManagerOptions<
Event extends EventConstraint,
> = {
additionalFinishStatuses?: string[];
messenger: RestrictedMessenger<
Name,
Action,
Event | UpdateBadgeEvent<Name>,
string,
string
>;
messenger: Messenger<Name, Action, Event | UpdateBadgeEvent<Name>>;
name: Name;
securityProviderRequest?: SecurityProviderRequest;
state?: MessageManagerState<Message>;
Expand All @@ -152,13 +146,7 @@ export abstract class AbstractMessageManager<
> extends BaseController<
Name,
MessageManagerState<Message>,
RestrictedMessenger<
Name,
Action,
Event | UpdateBadgeEvent<Name>,
string,
string
>
Messenger<Name, Action, Event | UpdateBadgeEvent<Name>>
> {
protected messages: Message[];

Expand Down Expand Up @@ -190,7 +178,7 @@ export abstract class AbstractMessageManager<
}

/**
* Adds request props to the messsage params and returns a new messageParams object.
* Adds request props to the message params and returns a new messageParams object.
* @param messageParams - The messageParams to add the request props to.
* @param req - The original request object.
* @returns The messageParams with the request props added.
Expand Down Expand Up @@ -247,7 +235,7 @@ export abstract class AbstractMessageManager<
state.unapprovedMessagesCount = this.getUnapprovedMessagesCount();
});
if (emitUpdateBadge) {
this.messagingSystem.publish(`${this.name}:updateBadge`);
this.messenger.publish(`${this.name}:updateBadge` as const);
}
}

Expand Down
14 changes: 6 additions & 8 deletions packages/message-manager/src/DecryptMessageManager.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { ApprovalType } from '@metamask/controller-utils';
import type {
ActionConstraint,
EventConstraint,
RestrictedMessenger,
} from '@metamask/base-controller';
import { ApprovalType } from '@metamask/controller-utils';
Messenger,
} from '@metamask/messenger';

import type {
AbstractMessage,
Expand All @@ -30,14 +30,12 @@ export type DecryptMessageManagerUpdateBadgeEvent = {
payload: [];
};

export type DecryptMessageManagerMessenger = RestrictedMessenger<
export type DecryptMessageManagerMessenger = Messenger<
typeof managerName,
ActionConstraint,
| EventConstraint
| DecryptMessageManagerUnapprovedMessageAddedEvent
| DecryptMessageManagerUpdateBadgeEvent,
string,
string
| DecryptMessageManagerUpdateBadgeEvent
>;

type DecryptMessageManagerOptions = {
Expand Down Expand Up @@ -194,7 +192,7 @@ export class DecryptMessageManager extends AbstractMessageManager<
const messageId = messageData.id;

await this.addMessage(messageData);
this.messagingSystem.publish(`${managerName}:unapprovedMessage`, {
this.messenger.publish(`${managerName}:unapprovedMessage`, {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Missing as const Assertion in messenger.publish

The messenger.publish call in DecryptMessageManager is missing the as const assertion. This is inconsistent with other message managers (e.g., AbstractMessageManager, EncryptionPublicKeyManager) and may cause type inference issues or compilation errors with the new messenger API.

Fix in Cursor Fix in Web

...updatedMessageParams,
metamaskId: messageId,
});
Expand Down
14 changes: 6 additions & 8 deletions packages/message-manager/src/EncryptionPublicKeyManager.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { ApprovalType } from '@metamask/controller-utils';
import type {
ActionConstraint,
EventConstraint,
RestrictedMessenger,
} from '@metamask/base-controller';
import { ApprovalType } from '@metamask/controller-utils';
Messenger,
} from '@metamask/messenger';

import type {
AbstractMessage,
Expand Down Expand Up @@ -31,14 +31,12 @@ export type EncryptionPublicKeyManagerUpdateBadgeEvent = {
payload: [];
};

export type EncryptionPublicKeyManagerMessenger = RestrictedMessenger<
export type EncryptionPublicKeyManagerMessenger = Messenger<
typeof managerName,
ActionConstraint,
| EventConstraint
| EncryptionPublicKeyManagerUnapprovedMessageAddedEvent
| EncryptionPublicKeyManagerUpdateBadgeEvent,
string,
string
| EncryptionPublicKeyManagerUpdateBadgeEvent
>;

type EncryptionPublicKeyManagerOptions = {
Expand Down Expand Up @@ -185,7 +183,7 @@ export class EncryptionPublicKeyManager extends AbstractMessageManager<
const messageId = messageData.id;

await this.addMessage(messageData);
this.messagingSystem.publish(`${this.name}:unapprovedMessage`, {
this.messenger.publish(`${this.name}:unapprovedMessage` as const, {
...updatedMessageParams,
metamaskId: messageId,
});
Expand Down
6 changes: 5 additions & 1 deletion packages/message-manager/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
export * from './AbstractMessageManager';
export * from './EncryptionPublicKeyManager';
export * from './DecryptMessageManager';
export * from './types';
export type {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this needed in this PR?

SignTypedDataMessageV3V4,
PersonalMessageParams,
TypedMessageParams,
} from './types';
3 changes: 2 additions & 1 deletion packages/message-manager/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
},
"references": [
{ "path": "../base-controller/tsconfig.build.json" },
{ "path": "../controller-utils/tsconfig.build.json" }
{ "path": "../controller-utils/tsconfig.build.json" },
{ "path": "../messenger/tsconfig.build.json" }
],
"include": ["../../types", "./src"]
}
3 changes: 2 additions & 1 deletion packages/message-manager/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
},
"references": [
{ "path": "../base-controller" },
{ "path": "../controller-utils" }
{ "path": "../controller-utils" },
{ "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 @@ -3777,6 +3777,7 @@ __metadata:
"@metamask/base-controller": "npm:^8.3.0"
"@metamask/controller-utils": "npm:^11.12.0"
"@metamask/eth-sig-util": "npm:^8.2.0"
"@metamask/messenger": "npm:^0.2.0"
"@metamask/utils": "npm:^11.4.2"
"@types/jest": "npm:^27.4.1"
"@types/uuid": "npm:^8.3.0"
Expand Down
Loading