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

feat: multi chain token detection polling #28258

Draft
wants to merge 52 commits into
base: develop
Choose a base branch
from

Conversation

salimtb
Copy link
Contributor

@salimtb salimtb commented Nov 4, 2024

Description

TokenDetectionController is responsible for detecting and keeping an updated list of all tokens across supported chains. This dataset is stored in the detectedTokens state variable within Metamask’s state. After completing this task, token detection will be enhanced by implementing periodic polling across all networks linked to the wallet, resulting in a more comprehensive dataset available to users.

This PR branches off of multiexchangerate branch because it will incorporate the useMultiPolling hook needed to initialize polling loops across chainIds.

For each network added to the wallet, the polling loop will receive the network as a parameter and execute token autodetection for it. Once results are available, they will be stored in detectedTokensAllChains, organized by chainId. This approach enables us to retrieve a comprehensive list of detected tokens across all networks.

This should now be working to test locally. Here's some steps to run this locally with core PR:

  1. Ensure you build this corresponding core PR using yarn build
  2. Link resolution of assets-controllers in package.json: "@metamask/assets-controllers": "../core/packages/assets-controllers",

Open in GitHub Codespaces

Related issues

Fixes: #3431

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Before

After

Screen.Recording.2024-11-04.at.11.33.34.mov

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Copy link
Contributor

github-actions bot commented Nov 4, 2024

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@salimtb salimtb changed the title Salim/multi chain token detection polling feat: multi chain token detection polling Nov 4, 2024
@salimtb salimtb force-pushed the salim/multi-chain-token-detection-polling branch 2 times, most recently from 054b356 to f13990b Compare November 4, 2024 10:37
@salimtb salimtb changed the base branch from develop to brian/multiexchangerate November 4, 2024 10:38
@salimtb salimtb force-pushed the salim/multi-chain-token-detection-polling branch 2 times, most recently from d589fee to 75b0332 Compare November 4, 2024 10:41
@@ -53,7 +54,9 @@ class Index extends PureComponent {
<CurrencyRateProvider>
<MetamaskNotificationsProvider>
<TokenRatesProvider>
<Routes />
<TokenDetectionProvider>
Copy link
Contributor Author

Choose a reason for hiding this comment

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

inject detectedTokens as provider , this will add to our global state the object below:

{ '0x1': { detected token ...} , ....}

@salimtb salimtb force-pushed the salim/multi-chain-token-detection-polling branch from 75b0332 to 7067d68 Compare November 4, 2024 11:00
Base automatically changed from brian/multiexchangerate to develop November 4, 2024 16:18
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.

4 participants