From fa22b4acc40026150bf09e1c48bde272b097c72d Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Mon, 8 Sep 2025 15:51:07 +0200 Subject: [PATCH] refactor: migrate TokenSearchDiscoveryController to @metamask/messenger --- .../CHANGELOG.md | 2 + .../package.json | 1 + .../token-search-discovery-controller.test.ts | 66 ++++++++++++++----- .../src/token-search-discovery-controller.ts | 36 ++++------ .../tsconfig.build.json | 5 +- .../tsconfig.json | 2 +- yarn.lock | 1 + 7 files changed, 71 insertions(+), 42 deletions(-) diff --git a/packages/token-search-discovery-controller/CHANGELOG.md b/packages/token-search-discovery-controller/CHANGELOG.md index 71320d5121a..03294a70062 100644 --- a/packages/token-search-discovery-controller/CHANGELOG.md +++ b/packages/token-search-discovery-controller/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6495](https://github.com/MetaMask/core/pull/6495)) + - Previously, `TokenSearchDiscoveryController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`. - 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)) - Bump `@metamask/utils` from `^11.2.0` to `^11.8.1` ([#6054](https://github.com/MetaMask/core/pull/6054), [#6588](https://github.com/MetaMask/core/pull/6588), [#6708](https://github.com/MetaMask/core/pull/6708)) diff --git a/packages/token-search-discovery-controller/package.json b/packages/token-search-discovery-controller/package.json index d248b1e0b11..87c6df4397c 100644 --- a/packages/token-search-discovery-controller/package.json +++ b/packages/token-search-discovery-controller/package.json @@ -48,6 +48,7 @@ }, "dependencies": { "@metamask/base-controller": "^8.4.0", + "@metamask/messenger": "^0.3.0", "@metamask/utils": "^11.8.1" }, "devDependencies": { diff --git a/packages/token-search-discovery-controller/src/token-search-discovery-controller.test.ts b/packages/token-search-discovery-controller/src/token-search-discovery-controller.test.ts index c6f8b31e386..b10c0e4b85d 100644 --- a/packages/token-search-discovery-controller/src/token-search-discovery-controller.test.ts +++ b/packages/token-search-discovery-controller/src/token-search-discovery-controller.test.ts @@ -1,4 +1,11 @@ -import { deriveStateFromMetadata, Messenger } from '@metamask/base-controller'; +import { deriveStateFromMetadata } from '@metamask/base-controller/next'; +import { + Messenger, + MOCK_ANY_NAMESPACE, + type MessengerActions, + type MessengerEvents, + type MockAnyNamespace, +} from '@metamask/messenger'; import { AbstractTokenDiscoveryApiService } from './token-discovery-api-service/abstract-token-discovery-api-service'; import { AbstractTokenSearchApiService } from './token-search-api-service/abstract-token-search-api-service'; @@ -14,18 +21,45 @@ import type { const controllerName = 'TokenSearchDiscoveryController'; +type AllTokenSearchDiscoveryControllerActions = + MessengerActions; + +type AllTokenSearchDiscoveryControllerEvents = + MessengerEvents; + +type RootMessenger = Messenger< + MockAnyNamespace, + AllTokenSearchDiscoveryControllerActions, + AllTokenSearchDiscoveryControllerEvents +>; + /** - * Helper function to get a restricted messenger for testing + * Constructs the root messenger. * - * @returns A restricted messenger for the TokenSearchDiscoveryController + * @returns A root messenger. */ -function getRestrictedMessenger() { - const messenger = new Messenger(); - return messenger.getRestricted({ - name: controllerName, - allowedActions: [], - allowedEvents: [], - }) as TokenSearchDiscoveryControllerMessenger; +function getRootMessenger(): RootMessenger { + return new Messenger({ + namespace: MOCK_ANY_NAMESPACE, + }); +} + +/** + * Helper function to get a messenger for testing + * + * @returns A messenger for the TokenSearchDiscoveryController + */ +function getMessenger(): TokenSearchDiscoveryControllerMessenger { + const rootMessenger = getRootMessenger(); + return new Messenger< + typeof controllerName, + AllTokenSearchDiscoveryControllerActions, + AllTokenSearchDiscoveryControllerEvents, + RootMessenger + >({ + namespace: controllerName, + parent: rootMessenger, + }); } describe('TokenSearchDiscoveryController', () => { @@ -133,7 +167,7 @@ describe('TokenSearchDiscoveryController', () => { mainController = new TokenSearchDiscoveryController({ tokenSearchService: new MockTokenSearchService(), tokenDiscoveryService: new MockTokenDiscoveryService(), - messenger: getRestrictedMessenger(), + messenger: getMessenger(), }); }); @@ -142,7 +176,7 @@ describe('TokenSearchDiscoveryController', () => { const controller = new TokenSearchDiscoveryController({ tokenSearchService: new MockTokenSearchService(), tokenDiscoveryService: new MockTokenDiscoveryService(), - messenger: getRestrictedMessenger(), + messenger: getMessenger(), }); expect(controller.state).toStrictEqual( @@ -160,7 +194,7 @@ describe('TokenSearchDiscoveryController', () => { tokenSearchService: new MockTokenSearchService(), tokenDiscoveryService: new MockTokenDiscoveryService(), state: initialState, - messenger: getRestrictedMessenger(), + messenger: getMessenger(), }); expect(controller.state).toStrictEqual(initialState); @@ -256,7 +290,7 @@ describe('TokenSearchDiscoveryController', () => { const errorController = new TokenSearchDiscoveryController({ tokenSearchService: new ErrorTokenSearchService(), tokenDiscoveryService: new MockTokenDiscoveryService(), - messenger: getRestrictedMessenger(), + messenger: getMessenger(), }); const results = await errorController.searchTokens({}); @@ -267,7 +301,7 @@ describe('TokenSearchDiscoveryController', () => { const errorController = new TokenSearchDiscoveryController({ tokenSearchService: new MockTokenSearchService(), tokenDiscoveryService: new ErrorTokenDiscoveryService(), - messenger: getRestrictedMessenger(), + messenger: getMessenger(), }); const results = await errorController.getTrendingTokens({}); @@ -281,7 +315,7 @@ describe('TokenSearchDiscoveryController', () => { deriveStateFromMetadata( mainController.state, mainController.metadata, - 'anonymous', + 'includeInDebugSnapshot', ), ).toMatchInlineSnapshot(`Object {}`); }); diff --git a/packages/token-search-discovery-controller/src/token-search-discovery-controller.ts b/packages/token-search-discovery-controller/src/token-search-discovery-controller.ts index 5f02a9d0a08..b8228c0c9db 100644 --- a/packages/token-search-discovery-controller/src/token-search-discovery-controller.ts +++ b/packages/token-search-discovery-controller/src/token-search-discovery-controller.ts @@ -1,10 +1,10 @@ -import type { - ControllerGetStateAction, - ControllerStateChangeEvent, - RestrictedMessenger, - StateMetadata, -} from '@metamask/base-controller'; -import { BaseController } from '@metamask/base-controller'; +import { + BaseController, + type ControllerGetStateAction, + type ControllerStateChangeEvent, + type StateMetadata, +} from '@metamask/base-controller/next'; +import type { Messenger } from '@metamask/messenger'; import type { AbstractTokenDiscoveryApiService } from './token-discovery-api-service/abstract-token-discovery-api-service'; import type { AbstractTokenSearchApiService } from './token-search-api-service/abstract-token-search-api-service'; @@ -36,13 +36,13 @@ const tokenSearchDiscoveryControllerMetadata: StateMetadata; /** diff --git a/packages/token-search-discovery-controller/tsconfig.build.json b/packages/token-search-discovery-controller/tsconfig.build.json index e5fd7422b9a..931c4d6594b 100644 --- a/packages/token-search-discovery-controller/tsconfig.build.json +++ b/packages/token-search-discovery-controller/tsconfig.build.json @@ -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"] } diff --git a/packages/token-search-discovery-controller/tsconfig.json b/packages/token-search-discovery-controller/tsconfig.json index 831cc7b8670..68c3ddfc2cd 100644 --- a/packages/token-search-discovery-controller/tsconfig.json +++ b/packages/token-search-discovery-controller/tsconfig.json @@ -3,6 +3,6 @@ "compilerOptions": { "baseUrl": "./" }, - "references": [{ "path": "../../packages/base-controller" }], + "references": [{ "path": "../base-controller" }, { "path": "../messenger" }], "include": ["../../types", "./src"] } diff --git a/yarn.lock b/yarn.lock index 4c490b218f9..2521f5304e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4733,6 +4733,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.4.0" + "@metamask/messenger": "npm:^0.3.0" "@metamask/utils": "npm:^11.8.1" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2"