Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[assets-controllers] Upgrade TokensController to fully utilize controller-messenger pattern #3690

Merged
merged 28 commits into from
Feb 9, 2024

Conversation

MajorLift
Copy link
Contributor

@MajorLift MajorLift commented Dec 20, 2023

Motivation

Remove TokenDetectionController constructor callbacks for TokensController.

  • TokensController features should be exposed as messenger actions/events so that consumers don't need to import the entire class.
  • TokensController should use messenger action/events to consume external controller features instead of callbacks.

Explanation

  • Replaces constructor options callbacks onPreferencesStateChange, onNetworkDidChange, onTokenListStateChange, getNetworkClientById with messenger actions (NetworkController:getNetworkClientById) and events (PreferencesController:stateChange, NetworkController:networkDidChange, TokenListController:stateChange).
  • Replaces tokens-controller callbacks in token-detection-controller and token-balances-controller with TokensController:getState, TokensController:addDetectedTokens actions and TokensController:stateChange event.

References

Changelog

@metamask/assets-controllers

Added

  • TokensController now exports TokensControllerActions, TokensControllerGetStateAction, TokensControllerAddDetectedTokensAction, TokensControllerEvents, TokensControllerStateChangeEvent. (#3690)

Changed

  • BREAKING: The TokensState type is now defined as a type alias rather than an interface. (#3690)
    • This is breaking because it could affect how this type is used with other types, such as Json, which does not support TypeScript interfaces.

Removed

  • BREAKING: TokenDetectionController constructor no longer accepts options onPreferencesStateChange, getPreferencesState, getTokensState, addDetectedTokens. (#3690, #3775)
  • BREAKING: TokensController constructor no longer accepts options onPreferencesStateChange, onNetworkDidChange, onTokenListStateChange, getNetworkClientById. (#3690)
  • BREAKING: TokenBalancesController constructor no longer accepts options onTokensStateChange, getSelectedAddress. (#3690)

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 highlighted breaking changes using the "BREAKING" category above as appropriate

@MajorLift MajorLift self-assigned this Dec 20, 2023
Base automatically changed from 231201-token-detection-controller-basecontrollerv2-migration to main December 22, 2023 19:05
@MajorLift MajorLift force-pushed the 231220-TokensController-v2-migration branch from aa491fd to a49fbb1 Compare January 8, 2024 17:33
@MajorLift MajorLift force-pushed the 231220-TokensController-v2-migration branch from 1d86730 to 1567287 Compare January 19, 2024 01:14
@MajorLift MajorLift changed the base branch from main to 230113-consolidate-TokenDetectionController-DetectTokensController January 20, 2024 04:35
@MajorLift MajorLift force-pushed the 231220-TokensController-v2-migration branch 2 times, most recently from 1f596d7 to 5695134 Compare January 21, 2024 21:09
@MajorLift MajorLift changed the title Upgrade TokensController to v2 Upgrade TokensController to fully utilize controller-messenger pattern Jan 21, 2024
@MajorLift MajorLift force-pushed the 231220-TokensController-v2-migration branch from edcf6d7 to bcd731f Compare January 21, 2024 21:42
@MajorLift MajorLift force-pushed the 230113-consolidate-TokenDetectionController-DetectTokensController branch from e8b624c to 209effd Compare January 21, 2024 21:44
@MajorLift MajorLift marked this pull request as ready for review January 21, 2024 21:51
@MajorLift MajorLift requested a review from a team as a code owner January 21, 2024 21:51
@MajorLift MajorLift force-pushed the 230113-consolidate-TokenDetectionController-DetectTokensController branch from 209effd to e9e4a4e Compare January 22, 2024 01:14
@MajorLift MajorLift changed the title Upgrade TokensController to fully utilize controller-messenger pattern [assets-controllers] Upgrade TokensController to fully utilize controller-messenger pattern Jan 22, 2024
@MajorLift MajorLift force-pushed the 230113-consolidate-TokenDetectionController-DetectTokensController branch from 197e379 to 8231533 Compare January 24, 2024 05:39
@MajorLift MajorLift force-pushed the 231220-TokensController-v2-migration branch 2 times, most recently from 9a95fb4 to 2575c72 Compare January 24, 2024 17:26
Copy link
Contributor

@mcmire mcmire left a comment

Choose a reason for hiding this comment

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

Makes sense! Had some comments. I believe all of them are relatively minor except for perhaps TokensState.

packages/assets-controllers/src/TokensController.ts Outdated Show resolved Hide resolved
packages/assets-controllers/src/TokensController.test.ts Outdated Show resolved Hide resolved
packages/assets-controllers/src/TokensController.test.ts Outdated Show resolved Hide resolved
packages/assets-controllers/src/TokensController.test.ts Outdated Show resolved Hide resolved
packages/assets-controllers/src/TokensController.test.ts Outdated Show resolved Hide resolved
@MajorLift MajorLift force-pushed the 230113-consolidate-TokenDetectionController-DetectTokensController branch from 1957a33 to ca19f99 Compare January 26, 2024 21:25
@MajorLift MajorLift force-pushed the 231220-TokensController-v2-migration branch 2 times, most recently from 6e8925b to 51223a2 Compare January 29, 2024 17:04
@MajorLift MajorLift force-pushed the 230113-consolidate-TokenDetectionController-DetectTokensController branch from 40434c1 to ed74732 Compare January 29, 2024 18:32
@MajorLift MajorLift force-pushed the 231220-TokensController-v2-migration branch from 51223a2 to f149b29 Compare January 29, 2024 18:39
Copy link
Contributor

@mcmire mcmire left a comment

Choose a reason for hiding this comment

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

Looks good! Just one comment.

@@ -137,8 +140,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- These are needed for the new "polling by `networkClientId`" feature
- **BREAKING:** `AccountTrackerController` has a new required state property, `accountByChainId`([#3586](https://github.com/MetaMask/core/pull/3586))
- This is needed to track balances accross chains. It was introduced for the "polling by `networkClientId`" feature, but is useful on its own as well.
- **BREAKING**: `AccountTrackerController` adds a mutex to `refresh` making it only possible for one call to be executed at time ([#3586](https://github.com/MetaMask/core/pull/3586))
- **BREAKING**: `TokensController.watchAsset` now performs on-chain validation of the asset's symbol and decimals, if they're defined in the contract ([#1745](https://github.com/MetaMask/core/pull/1745))
- **BREAKING:** `AccountTrackerController` adds a mutex to `refresh` making it only possible for one call to be executed at time ([#3586](https://github.com/MetaMask/core/pull/3586))
Copy link
Contributor

Choose a reason for hiding this comment

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

Good call. We have a ticket to check this on the auto-changelog side: MetaMask/auto-changelog#109

packages/assets-controllers/CHANGELOG.md Show resolved Hide resolved
@MajorLift MajorLift force-pushed the 230113-consolidate-TokenDetectionController-DetectTokensController branch from 754b46f to 88eb7ca Compare February 6, 2024 21:46
@MajorLift MajorLift force-pushed the 231220-TokensController-v2-migration branch from 24f2d73 to 11da214 Compare February 6, 2024 22:55
MajorLift and others added 23 commits February 8, 2024 16:22
… `getState`, `addDetectedTokens` messenger actions
…`TokensController:addDetectedTokens` messenger actions
…ntroller callbacks with messenger actions/events.

- `getSelectedAddress` replaced with `PreferencesController:getState` action
- `onTokensStateChange` replaced with `TokensController:stateChange` event
…` action, `TokensController:stateChange` event
Co-authored-by: Elliot Winkler <elliot.winkler@gmail.com>
…TokensController:getState` calls for `ignoredTokens`
commit 5f9f474
Merge: 2108233 a386301
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Feb 8 16:28:06 2024 -0500

    Merge remote-tracking branch 'origin/231220-TokensController-v2-migration' into 231220-TokensController-v2-migration

commit a386301
Merge: 5200f85 582b370
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Feb 8 13:09:06 2024 -0500

    Merge branch '230113-consolidate-TokenDetectionController-DetectTokensController' into 231220-TokensController-v2-migration

commit 582b370
Merge: 4a944d8 065fd91
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Feb 8 13:08:19 2024 -0500

    Merge branch 'main' into 230113-consolidate-TokenDetectionController-DetectTokensController

commit 5200f85
Merge: 68999be 4a944d8
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Feb 7 13:54:44 2024 -0500

    Merge branch '230113-consolidate-TokenDetectionController-DetectTokensController' into 231220-TokensController-v2-migration

commit 4a944d8
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Feb 7 13:44:59 2024 -0500

    Apply suggestions to CHANGELOG

    Co-authored-by: Elliot Winkler <elliot.winkler@gmail.com>

commit 68999be
Merge: 11da214 e01f993
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Feb 6 17:58:58 2024 -0500

    Merge branch '230113-consolidate-TokenDetectionController-DetectTokensController' into 231220-TokensController-v2-migration

commit e01f993
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Feb 6 17:56:39 2024 -0500

    test: adjust coverage thresholds

commit 11da214
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Feb 6 17:54:53 2024 -0500

    test: adjust coverage thresholds

commit 01cf796
Merge: d501062 88eb7ca
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Feb 6 17:53:49 2024 -0500

    Merge branch '230113-consolidate-TokenDetectionController-DetectTokensController' into 231220-TokensController-v2-migration

commit d501062
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Feb 6 16:50:02 2024 -0500

    [token-detection-controller] Fix typing for `STATIC_MAINNET_TOKEN_LIST`

commit 8556d7a
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Feb 6 16:49:37 2024 -0500

    [token-detection-controller] Fix `detectTokens` to remove redundant `TokensController:getState` calls for `ignoredTokens`

commit 88eb7ca
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Feb 6 15:31:40 2024 -0500

    Replace `detectTokens` with `#restartTokenDetection` in `networkDidChange` listener

commit 91be385
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Feb 6 09:19:18 2024 -0500

    Include `#stopPolling()` call in `KeyringController:lock` listener

commit 9a4ae93
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 31 10:28:32 2024 -0500

    In changelog, move new actions/events under "Added" heading

commit 312e450
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 29 13:31:43 2024 -0500

    In networkDidChange event listener, detect tokens if `networkClientId` is changed instead of `chainId`, and avoid resetting polling interval

commit 04df278
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 16:24:46 2024 -0500

    Changelog linter fix

commit 907b4df
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 11:02:38 2024 -0500

    test: remove unnecessary action handler unregisters

commit f1af71a
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 10:51:50 2024 -0500

    Use `networkClientId` instead of `chainId` in `#restartTokenDetection`

commit 7c25f3c
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 10:49:10 2024 -0500

    Extract `findCaseInsensitiveMatch` helper function

commit 2db0081
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 22 10:08:17 2024 -0500

    Update packages/assets-controllers/CHANGELOG.md

    Update packages/assets-controllers/CHANGELOG.md

commit 968c0c0
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 22 10:05:04 2024 -0500

    [assets-controllers] Bump `@metamask/kerying-api` to ^3.0.0 and remove yarn resolutions entry for `@metamask/providers`

commit 2be2e24
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 20:14:09 2024 -0500

    Add CHANGELOG entries

commit 1173eb9
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:39:47 2024 -0500

    test: adjust for removal of `getPreferencesState` callback

commit c90de3e
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:38:58 2024 -0500

    test: add callbacks for all allowed actions, events as `WithControllerCallback` arguments

commit ad11ac7
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:36:59 2024 -0500

    test: adjust action,event allowlist in `buildTokenDetectionControllerMessenger`

commit 4b303b4
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:32:46 2024 -0500

    Minor refactors to event listeners for consistency

commit beacf9b
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:31:23 2024 -0500

    Replace preferences controller callbacks in constructor with `getState` action and `stateChange` event

commit b5bd0e8
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:29:42 2024 -0500

    Remove unused `NetworkControllerStateChange` event

    - **BREAKING**: use `NetworkControllerNetworkDidChangeEvent` instead

commit 3fbdffa
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:25:37 2024 -0500

    Add `@metamask/keyring-api` as devDep (for `InternalAccount` type in tests)

commit a44ccf7
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 18 20:31:40 2024 -0500

    Add yarn resolutions entry to resolve conflicting `@metamask/providers` versions used by `@metamask/accounts-controller`

commit 7016835
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 17 17:04:04 2024 -0500

    Define `#registerEventListeners` constructor helper private method

commit adc8dca
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 17 16:09:45 2024 -0500

    Make `#isUnlocked` property non-optional

commit 78e9fde
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Jan 16 19:56:10 2024 -0500

    test: adjust coverage thresholds

commit 3fd2138
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Jan 16 19:39:20 2024 -0500

    test: Fix incorrect mock for `KeyringController:getState`

commit 5df6b81
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 12 14:33:07 2024 -0500

    test: add actions, events, callbacks to test messenger

commit 33818aa
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 18:53:02 2024 -0500

    Exclude `detectedTokens` already stored in tokens-controller state from `tokensToDetect`

commit 129c82e
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 18:46:43 2024 -0500

    Use legacy token list from contract-metadata repo to perform auto-detection if active network is mainnet and token detection is disabled in preferences

commit 0f46fdc
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 11:35:16 2024 -0500

    Add `#trackMetaMetricsEvent` tracker property and call

commit 2485341
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 11:28:33 2024 -0500

    Define `#registerKeyringListeners`, `isActive` methods

commit 8e204e6
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 10:56:20 2024 -0500

    Subscribe to `AccountsController:selectedAccountChange` event

commit ea96025
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 10:54:47 2024 -0500

    Define and apply `#restartTokenDetection` method

commit 2d31cce
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 10:48:41 2024 -0500

    [assets-controllers] Install `{accounts,keyring}-controller` as deps and peerDeps

commit 6fde161
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Feb 5 10:05:23 2024 -0500

    [token-detection-controller] test: remove unnecessary `as unknown as` cast

commit e504d2e
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Feb 2 16:45:08 2024 -0500

    Update packages/assets-controllers/CHANGELOG.md

    Co-authored-by: Elliot Winkler <elliot.winkler@gmail.com>

commit 129fda6
Merge: 1d7a580 5efcc1e
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 31 10:30:13 2024 -0500

    Merge branch '230113-consolidate-TokenDetectionController-DetectTokensController' into 231220-TokensController-v2-migration

commit 5efcc1e
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 31 10:28:32 2024 -0500

    In changelog, move new actions/events under "Added" heading

commit 1d7a580
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 29 15:25:17 2024 -0500

    test: adjust coverage thresholds

commit f149b29
Merge: 1b7d9a5 ed74732
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 29 13:38:56 2024 -0500

    Merge branch '230113-consolidate-TokenDetectionController-DetectTokensController' into 231220-TokensController-v2-migration

commit ed74732
Merge: aed885a 8c09b16
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 29 13:31:47 2024 -0500

    Merge branch 'main' into 230113-consolidate-TokenDetectionController-DetectTokensController

commit aed885a
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 29 13:31:43 2024 -0500

    In networkDidChange event listener, detect tokens if `networkClientId` is changed instead of `chainId`, and avoid resetting polling interval

commit 1b7d9a5
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 29 12:03:39 2024 -0500

    test: rename `registerListeners` to `promiseForApprovals`

commit 41f4f1d
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 29 12:03:19 2024 -0500

    test: move `addRequestHandler` initialization to individual test

commit 1c86179
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 29 12:02:35 2024 -0500

    test: initialize `getNetworkClientByIdHandler` in `beforeEach`

commit a66fd26
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 29 12:01:48 2024 -0500

    test: remove unnecessary action handler unregisters

commit 25fe76d
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 18:20:23 2024 -0500

    Remove `BaseState` from `TokensState`

commit c8f9a71
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 16:59:59 2024 -0500

    Linter fix

commit d4a65de
Merge: 2575c72 ca19f99
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 16:59:13 2024 -0500

    Merge branch '230113-consolidate-TokenDetectionController-DetectTokensController' into 231220-TokensController-v2-migration

commit ca19f99
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 16:24:46 2024 -0500

    Changelog linter fix

commit b49a545
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 11:02:38 2024 -0500

    test: remove unnecessary action handler unregisters

commit 571c3b2
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 10:51:50 2024 -0500

    Use `networkClientId` instead of `chainId` in `#restartTokenDetection`

commit 8eff112
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 26 10:49:10 2024 -0500

    Extract `findCaseInsensitiveMatch` helper function

commit 6df8aa4
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 22 10:08:17 2024 -0500

    Update packages/assets-controllers/CHANGELOG.md

    Update packages/assets-controllers/CHANGELOG.md

commit d77bce0
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 22 10:05:04 2024 -0500

    [assets-controllers] Bump `@metamask/kerying-api` to ^3.0.0 and remove yarn resolutions entry for `@metamask/providers`

commit c434e8f
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 20:14:09 2024 -0500

    Add CHANGELOG entries

commit 392140e
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:39:47 2024 -0500

    test: adjust for removal of `getPreferencesState` callback

commit 169554f
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:38:58 2024 -0500

    test: add callbacks for all allowed actions, events as `WithControllerCallback` arguments

commit fc9b631
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:36:59 2024 -0500

    test: adjust action,event allowlist in `buildTokenDetectionControllerMessenger`

commit 99d35f3
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:32:46 2024 -0500

    Minor refactors to event listeners for consistency

commit 3d74e54
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:31:23 2024 -0500

    Replace preferences controller callbacks in constructor with `getState` action and `stateChange` event

commit b92cd73
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:29:42 2024 -0500

    Remove unused `NetworkControllerStateChange` event

    - **BREAKING**: use `NetworkControllerNetworkDidChangeEvent` instead

commit e947207
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:25:37 2024 -0500

    Add `@metamask/keyring-api` as devDep (for `InternalAccount` type in tests)

commit f436032
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 18 20:31:40 2024 -0500

    Add yarn resolutions entry to resolve conflicting `@metamask/providers` versions used by `@metamask/accounts-controller`

commit d19f5d6
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 17 17:04:04 2024 -0500

    Define `#registerEventListeners` constructor helper private method

commit 1270aca
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 17 16:09:45 2024 -0500

    Make `#isUnlocked` property non-optional

commit f6c2ef0
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Jan 16 19:56:10 2024 -0500

    test: adjust coverage thresholds

commit 41fee27
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Jan 16 19:39:20 2024 -0500

    test: Fix incorrect mock for `KeyringController:getState`

commit a590dcc
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 12 14:33:07 2024 -0500

    test: add actions, events, callbacks to test messenger

commit 6ba98de
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 18:53:02 2024 -0500

    Exclude `detectedTokens` already stored in tokens-controller state from `tokensToDetect`

commit 32465fd
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 18:46:43 2024 -0500

    Use legacy token list from contract-metadata repo to perform auto-detection if active network is mainnet and token detection is disabled in preferences

commit 2673a3b
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 11:35:16 2024 -0500

    Add `#trackMetaMetricsEvent` tracker property and call

commit 0ded3cb
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 11:28:33 2024 -0500

    Define `#registerKeyringListeners`, `isActive` methods

commit f7718fd
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 10:56:20 2024 -0500

    Subscribe to `AccountsController:selectedAccountChange` event

commit 78e82e7
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 10:54:47 2024 -0500

    Define and apply `#restartTokenDetection` method

commit 2d08c2d
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 10:48:41 2024 -0500

    [assets-controllers] Install `{accounts,keyring}-controller` as deps and peerDeps

commit 2575c72
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 24 12:04:03 2024 -0500

    [assets-controllers] test: adjust coverage thresholds

commit 9c61747
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 16:42:21 2024 -0500

    Add changelog entries

commit 0d50480
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 16:40:58 2024 -0500

    [token-list-controller,token-rates-controller] Enumerate package-level exports

commit 669bb4f
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 16:08:39 2024 -0500

    [token-balances-controller] test: Use `PreferencesController:getState` action, `TokensController:stateChange` event

commit 12971a5
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 16:00:35 2024 -0500

    [token-balances-controller] Replace tokens-controller, preferences-controller callbacks with messenger actions/events.

    - `getSelectedAddress` replaced with `PreferencesController:getState` action
    - `onTokensStateChange` replaced with `TokensController:stateChange` event

commit d1a303a
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 15:57:51 2024 -0500

    [token-balances-controller] Rename and export `getDefaultTokenBalancesState`

commit 1b0cf68
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 15:56:15 2024 -0500

    [token-detection-controller] test: Mock `TokensController:getState`, `TokensController:addDetectedTokens` messenger actions

commit 83e87ad
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 15:54:00 2024 -0500

    [token-detection-controller] Replace tokens-controller callbacks with `getState`, `addDetectedTokens` messenger actions

commit bf87104
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 15:52:38 2024 -0500

    test: Use `PreferencesController:stateChange` event instead of `onPreferencesStateChange` callback

commit f230718
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 15:51:25 2024 -0500

    Expose `addDetectedTokens` action

commit 5aed7e0
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 15:48:31 2024 -0500

    Replace `onPreferencesStateChange` callback with messenger event

commit 5b8fb07
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 18 15:33:43 2024 -0500

    test: Adjust tests to updates in tokens-controller

commit dccfe62
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 18 11:56:47 2024 -0500

    Add `TokensControllerGetStateAction`, `TokensControllerActions` types

commit 48551b9
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 18 11:56:28 2024 -0500

    Fix typing for `TokensState`

commit 4d65ee6
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Dec 19 14:42:48 2023 -0800

    [token-detection-controller] test: Restore publishes for `networkDidChange` event, mock polygon network client

commit 56813f4
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Dec 19 12:36:28 2023 -0800

    Remove unnecessary `?` operator

commit 1405a53
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Dec 19 12:36:04 2023 -0800

    Use type assertion to mock `getNetworkClientById` return value

commit e6c9663
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Dec 19 05:28:34 2023 -0800

    test: Mock `NetworkController:getNetworkClientById` action handler

commit 8039cb8
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Dec 19 05:27:52 2023 -0800

    test: Mock `TokenListController:stateChange` event

commit 77a8531
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Dec 18 17:19:43 2023 -0800

    [token-balances-controller] Adjust tests to updates in tokens-controller

commit 2d58e1e
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Dec 18 16:30:07 2023 -0800

    Replace callbacks `onNetworkDidChange`, `onTokenListStateChange`, `getNetworkClientById` with messenger actions/events

commit 8231533
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 22 10:08:17 2024 -0500

    Update packages/assets-controllers/CHANGELOG.md

    Update packages/assets-controllers/CHANGELOG.md

commit 396d010
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Mon Jan 22 10:05:04 2024 -0500

    [assets-controllers] Bump `@metamask/kerying-api` to ^3.0.0 and remove yarn resolutions entry for `@metamask/providers`

commit 4097960
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Sun Jan 21 20:14:09 2024 -0500

    Add CHANGELOG entries

commit 524b1b9
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:39:47 2024 -0500

    test: adjust for removal of `getPreferencesState` callback

commit c08cadd
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:38:58 2024 -0500

    test: add callbacks for all allowed actions, events as `WithControllerCallback` arguments

commit 324aa97
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:36:59 2024 -0500

    test: adjust action,event allowlist in `buildTokenDetectionControllerMessenger`

commit 412bb68
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:32:46 2024 -0500

    Minor refactors to event listeners for consistency

commit f1dd425
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:31:23 2024 -0500

    Replace preferences controller callbacks in constructor with `getState` action and `stateChange` event

commit 7ec7246
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:29:42 2024 -0500

    Remove unused `NetworkControllerStateChange` event

    - **BREAKING**: use `NetworkControllerNetworkDidChangeEvent` instead

commit f0ba761
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 19 21:25:37 2024 -0500

    Add `@metamask/keyring-api` as devDep (for `InternalAccount` type in tests)

commit 9354e69
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 18 20:31:40 2024 -0500

    Add yarn resolutions entry to resolve conflicting `@metamask/providers` versions used by `@metamask/accounts-controller`

commit c6ba49a
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 17 17:04:04 2024 -0500

    Define `#registerEventListeners` constructor helper private method

commit e217169
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Wed Jan 17 16:09:45 2024 -0500

    Make `#isUnlocked` property non-optional

commit 68533dd
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Jan 16 19:56:10 2024 -0500

    test: adjust coverage thresholds

commit 2acc5a1
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Tue Jan 16 19:39:20 2024 -0500

    test: Fix incorrect mock for `KeyringController:getState`

commit 284c976
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Fri Jan 12 14:33:07 2024 -0500

    test: add actions, events, callbacks to test messenger

commit d3448d0
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 18:53:02 2024 -0500

    Exclude `detectedTokens` already stored in tokens-controller state from `tokensToDetect`

commit 1e9e2a3
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 18:46:43 2024 -0500

    Use legacy token list from contract-metadata repo to perform auto-detection if active network is mainnet and token detection is disabled in preferences

commit 48d733a
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 11:35:16 2024 -0500

    Add `#trackMetaMetricsEvent` tracker property and call

commit 3eb9a64
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 11:28:33 2024 -0500

    Define `#registerKeyringListeners`, `isActive` methods

commit feb1ff9
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 10:56:20 2024 -0500

    Subscribe to `AccountsController:selectedAccountChange` event

commit 3b987d1
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 10:54:47 2024 -0500

    Define and apply `#restartTokenDetection` method

commit 26e461f
Author: Jongsun Suh <jongsun.suh@icloud.com>
Date:   Thu Jan 11 10:48:41 2024 -0500

    [assets-controllers] Install `{accounts,keyring}-controller` as deps and peerDeps
@MajorLift MajorLift force-pushed the 231220-TokensController-v2-migration branch from 5f9f474 to 09cac7f Compare February 8, 2024 21:35
Copy link
Contributor

@mcmire mcmire left a comment

Choose a reason for hiding this comment

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

Looks good!

@@ -519,7 +516,7 @@ export class TokenDetectionController extends StaticIntervalPollingController<

if (ignored === undefined) {
const { decimals, symbol, aggregators, iconUrl, name } =
tokenList[caseInsensitiveTokenKey];
tokenListUsed[caseInsensitiveTokenKey];
Copy link
Contributor

Choose a reason for hiding this comment

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

Ah, good catch.

@MajorLift MajorLift merged commit 4433150 into main Feb 9, 2024
136 checks passed
@MajorLift MajorLift deleted the 231220-TokensController-v2-migration branch February 9, 2024 02:36
@MajorLift MajorLift restored the 231220-TokensController-v2-migration branch February 9, 2024 02:36
@MajorLift MajorLift deleted the 231220-TokensController-v2-migration branch February 9, 2024 02:40
MajorLift added a commit that referenced this pull request Feb 9, 2024
…h `DetectTokensController` (#3867)

## Explanation

- This PR adds unit tests for the token-detection-controller API changes
implemented in #3775.
- The following changes are covered in the new tests:
  - Don't detect if keyring-controller `isUnlocked` state is false.
- Subscribe to `KeyringController:unlock`, `KeyringController:lock`
events
  - Subscribe to `AccountsController:selectedAccountChange` event
- Detect tokens using `@metamask/contract-metadata` static token list if
on mainnet and `useTokenDetection` is false.
  - Call `trackMetaMetricsEvent` for every detected token.
- The aim of this PR isn't to achieve 100% test coverage for
token-detection-controller. That will be the goal of follow-up ticket
#1615

## References

- Closes #3626 
- Follows from:
  - #3775
  - #3690
- Followed by #1615 
  
## Changelog

N/A

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've highlighted breaking changes using the "BREAKING" category
above as appropriate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants