Skip to content
Open
Show file tree
Hide file tree
Changes from 4 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/address-book-controller/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` ([#6383](https://github.com/MetaMask/core/pull/6383))
- Previously, `AddressBookController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`.
- Bump `@metamask/base-controller` from `^8.0.1` to `^8.2.0` ([#6284](https://github.com/MetaMask/core/pull/6284), [#6355](https://github.com/MetaMask/core/pull/6355))
- Bump `@metamask/controller-utils` from `^11.11.0` to `^11.12.0` ([#6303](https://github.com/MetaMask/core/pull/6303))

Expand Down
1 change: 1 addition & 0 deletions packages/address-book-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
"dependencies": {
"@metamask/base-controller": "^8.2.0",
"@metamask/controller-utils": "^11.12.0",
"@metamask/messenger": "^0.1.0",
"@metamask/utils": "^11.4.2"
},
"devDependencies": {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Messenger } from '@metamask/base-controller';
import { toHex } from '@metamask/controller-utils';
import { Messenger } from '@metamask/messenger';
import type { Hex } from '@metamask/utils';

import type {
Expand All @@ -20,29 +20,34 @@ import {
* @returns Test fixtures including messenger, controller, and event listeners
*/
function arrangeMocks() {
const messenger = new Messenger<
const rootMessenger = new Messenger<
'Root',
AddressBookControllerActions,
AddressBookControllerEvents
>();
const restrictedMessenger = messenger.getRestricted({
name: controllerName,
allowedActions: [],
allowedEvents: [],
>({ namespace: 'Root' });
const addressBookControllerMessenger = new Messenger<
typeof controllerName,
AddressBookControllerActions,
AddressBookControllerEvents,
typeof rootMessenger
>({
namespace: controllerName,
parent: rootMessenger,
});
const controller = new AddressBookController({
messenger: restrictedMessenger,
messenger: addressBookControllerMessenger,
});

// Set up mock event listeners
const contactUpdatedListener = jest.fn();
const contactDeletedListener = jest.fn();

// Subscribe to events
messenger.subscribe(
rootMessenger.subscribe(
'AddressBookController:contactUpdated' as AddressBookControllerContactUpdatedEvent['type'],
contactUpdatedListener,
);
messenger.subscribe(
rootMessenger.subscribe(
Copy link

Choose a reason for hiding this comment

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

Bug: Inconsistent Event Subscription Handling

The AddressBookController tests show inconsistent type assertion for event subscriptions. The contactUpdated event is subscribed without assertion, while contactDeleted retains explicit type casting. This suggests an incomplete migration to the new messenger system, affecting consistency and type safety.

Fix in Cursor Fix in Web

'AddressBookController:contactDeleted' as AddressBookControllerContactDeletedEvent['type'],
contactDeletedListener,
);
Expand Down
23 changes: 9 additions & 14 deletions packages/address-book-controller/src/AddressBookController.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import type {
ControllerGetStateAction,
ControllerStateChangeEvent,
RestrictedMessenger,
} from '@metamask/base-controller';
import { BaseController } from '@metamask/base-controller';
import { BaseController } from '@metamask/base-controller/next';
import {
normalizeEnsName,
isValidHexAddress,
isSafeDynamicKey,
toChecksumHexAddress,
toHex,
} from '@metamask/controller-utils';
import type { Messenger } from '@metamask/messenger';
import type { Hex } from '@metamask/utils';

/**
Expand Down Expand Up @@ -165,12 +165,10 @@ export const getDefaultAddressBookControllerState =
/**
* The messenger of the {@link AddressBookController} for communication.
*/
export type AddressBookControllerMessenger = RestrictedMessenger<
export type AddressBookControllerMessenger = Messenger<
typeof controllerName,
AddressBookControllerActions,
AddressBookControllerEvents,
never,
never
AddressBookControllerEvents
>;

/**
Expand Down Expand Up @@ -270,7 +268,7 @@ export class AddressBookController extends BaseController<
// These entries with chainId='*' are the wallet's own accounts (internal MetaMask accounts),
// not user-created contacts. They don't need to trigger sync events.
if (String(chainId) !== WALLET_ACCOUNTS_CHAIN_ID) {
this.messagingSystem.publish(
this.messenger.publish(
'AddressBookController:contactDeleted',
deletedEntry,
);
Expand Down Expand Up @@ -330,10 +328,7 @@ export class AddressBookController extends BaseController<
// These entries with chainId='*' are the wallet's own accounts (internal MetaMask accounts),
// not user-created contacts. They don't need to trigger sync events.
if (String(chainId) !== WALLET_ACCOUNTS_CHAIN_ID) {
this.messagingSystem.publish(
'AddressBookController:contactUpdated',
entry,
);
this.messenger.publish('AddressBookController:contactUpdated', entry);
}

return true;
Expand All @@ -343,15 +338,15 @@ export class AddressBookController extends BaseController<
* Registers message handlers for the AddressBookController.
*/
#registerMessageHandlers() {
this.messagingSystem.registerActionHandler(
this.messenger.registerActionHandler(
`${controllerName}:list`,
this.list.bind(this),
);
this.messagingSystem.registerActionHandler(
this.messenger.registerActionHandler(
`${controllerName}:set`,
this.set.bind(this),
);
this.messagingSystem.registerActionHandler(
this.messenger.registerActionHandler(
`${controllerName}:delete`,
this.delete.bind(this),
);
Expand Down
1 change: 1 addition & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2490,6 +2490,7 @@ __metadata:
"@metamask/auto-changelog": "npm:^3.4.4"
"@metamask/base-controller": "npm:^8.2.0"
"@metamask/controller-utils": "npm:^11.12.0"
"@metamask/messenger": "npm:^0.1.0"
"@metamask/utils": "npm:^11.4.2"
"@types/jest": "npm:^27.4.1"
deepmerge: "npm:^4.2.2"
Expand Down
Loading