Skip to content

Commit 8042cdd

Browse files
authored
feat: Add new metadata properties to TokenSearchDiscoveryController (#6586)
## Explanation The new metadata properties `includeInStateLogs` and `usedInUi` have been added to `TokenSearchDiscoveryController`. ## References * Fixes #6512 * Related to #6443 ## 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 8f5c321 commit 8042cdd

File tree

3 files changed

+78
-5
lines changed

3 files changed

+78
-5
lines changed

packages/token-search-discovery-controller/CHANGELOG.md

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

88
## [Unreleased]
99

10+
### Added
11+
12+
- Add two new controller state metadata properties: `includeInStateLogs` and `usedInUi` ([#6586](https://github.com/MetaMask/core/pull/6586))
13+
1014
### Changed
1115

1216
- Bump `@metamask/utils` from `^11.2.0` to `^11.4.2` ([#6054](https://github.com/MetaMask/core/pull/6054))

packages/token-search-discovery-controller/src/token-search-discovery-controller.test.ts

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Messenger } from '@metamask/base-controller';
1+
import { deriveStateFromMetadata, Messenger } from '@metamask/base-controller';
22

33
import { AbstractTokenDiscoveryApiService } from './token-discovery-api-service/abstract-token-discovery-api-service';
44
import { AbstractTokenSearchApiService } from './token-search-api-service/abstract-token-search-api-service';
@@ -274,4 +274,61 @@ describe('TokenSearchDiscoveryController', () => {
274274
expect(results).toStrictEqual([]);
275275
});
276276
});
277+
278+
describe('metadata', () => {
279+
it('includes expected state in debug snapshots', () => {
280+
expect(
281+
deriveStateFromMetadata(
282+
mainController.state,
283+
mainController.metadata,
284+
'anonymous',
285+
),
286+
).toMatchInlineSnapshot(`Object {}`);
287+
});
288+
289+
it('includes expected state in state logs', () => {
290+
expect(
291+
deriveStateFromMetadata(
292+
mainController.state,
293+
mainController.metadata,
294+
'includeInStateLogs',
295+
),
296+
).toMatchInlineSnapshot(`
297+
Object {
298+
"lastSearchTimestamp": null,
299+
"recentSearches": Array [],
300+
}
301+
`);
302+
});
303+
304+
it('persists expected state', () => {
305+
expect(
306+
deriveStateFromMetadata(
307+
mainController.state,
308+
mainController.metadata,
309+
'persist',
310+
),
311+
).toMatchInlineSnapshot(`
312+
Object {
313+
"lastSearchTimestamp": null,
314+
"recentSearches": Array [],
315+
}
316+
`);
317+
});
318+
319+
it('includes expected state in UI', () => {
320+
expect(
321+
deriveStateFromMetadata(
322+
mainController.state,
323+
mainController.metadata,
324+
'usedInUi',
325+
),
326+
).toMatchInlineSnapshot(`
327+
Object {
328+
"lastSearchTimestamp": null,
329+
"recentSearches": Array [],
330+
}
331+
`);
332+
});
333+
});
277334
});

packages/token-search-discovery-controller/src/token-search-discovery-controller.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type {
22
ControllerGetStateAction,
33
ControllerStateChangeEvent,
44
RestrictedMessenger,
5+
StateMetadata,
56
} from '@metamask/base-controller';
67
import { BaseController } from '@metamask/base-controller';
78

@@ -30,10 +31,21 @@ export type TokenSearchDiscoveryControllerState = {
3031
lastSearchTimestamp: number | null;
3132
};
3233

33-
const tokenSearchDiscoveryControllerMetadata = {
34-
recentSearches: { persist: true, anonymous: false },
35-
lastSearchTimestamp: { persist: true, anonymous: false },
36-
} as const;
34+
const tokenSearchDiscoveryControllerMetadata: StateMetadata<TokenSearchDiscoveryControllerState> =
35+
{
36+
recentSearches: {
37+
includeInStateLogs: true,
38+
persist: true,
39+
anonymous: false,
40+
usedInUi: true,
41+
},
42+
lastSearchTimestamp: {
43+
includeInStateLogs: true,
44+
persist: true,
45+
anonymous: false,
46+
usedInUi: true,
47+
},
48+
};
3749

3850
// === MESSENGER ===
3951

0 commit comments

Comments
 (0)