-
-
Notifications
You must be signed in to change notification settings - Fork 276
feat: add rwa data to tokens in tokens controller #7804
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
Conversation
71c41ef to
b0f194e
Compare
9a7d42f to
7cf3066
Compare
bd29fa0 to
994090c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
mcmire
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One suggestion. Would be good to get input from @MetaMask/metamask-assets as well.
BTW, cp-XXX in PR titles for this repo doesn't have any effect — this pattern is only applicable to extension and mobile.
| // We rely on `window` to make requests | ||
| testEnvironment: '<rootDir>/jest.environment.js', | ||
|
|
||
| // Watchman isn't available in some environments (e.g. sandboxed CI/containers) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: Should this be in its own PR? It doesn't seem to be related to the changes here and might get buried. It would also be good to understand what you were doing when you encountered the problem that this fixes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's just codex that added this, good catch, will get rid of it :)
We would like to release a version of this package with these changes to cherry pick for last week's RC - do you know what the usual method for this would be ? @mcmire |
|
@oscarwroche Yup! So the process works like this:
|
|
@oscarwroche i'll publish a preview build , can you pls use it on the extension and check if everything is working as expected |
|
@metamaskbot publish-preview |
Co-authored-by: Sébastien Van Eyck <sebastien.vaneyck@gmail.com>
|
@metamaskbot publish-preview |
|
Preview builds have been published. See these instructions for more information about preview builds. Expand for full list of packages and versions. |
…3.18.0 (#39887) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. [skip-e2e] --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR bump `@metamask/assets-controllers` from `^99.0.0` to `^99.3.1`. The current resolved version in the `yarn.lock` is `99.1.0`, which includes a change that introduces a bug with Tempo native balances. A fix has been released in `99.3.1`, so we need to bump to that version to get the fix. The cherry-pick into `13.18.0` is necessary as it includes the affected version of `@metamask/assets-controllers`, and we don't want it to reach production. ```markdown ## [99.3.1] ### Fixed - Remove `Tempo Testnet` multicall address ([#7858](MetaMask/core#7858)). ## [99.3.0] ### Added - Add optional `rwaData` support when adding tokens in `TokensController` ([#7804](MetaMask/core#7804)). ### Changed - Lock `@metamask/core-backend` to `5.0.0` ([#7852](MetaMask/core#7852)) - Bump `@metamask/profile-sync-controller` from `^27.0.0` to `^27.1.0` ([#7849](MetaMask/core#7849)) - Fix trending tokens showing incorrect market cap values by adding `usePriceApiData` parameter (defaults to `true`) to use price API data for accurate market data ([#7829](MetaMask/core#7829)) - Bump `@metamask/transaction-controller` from `^62.13.0` to `^62.15.0` ([#7832](MetaMask/core#7832), [#7854](MetaMask/core#7854)) ## [99.2.0] ### Added - Add `HYPEREVM` support ([#7790](MetaMask/core#7790)) - Add `HYPEREVM` in `SupportedTokenDetectionNetworks` - Add `HYPEREVM` in `SUPPORTED_NETWORKS_ACCOUNTS_API_V4` ### Changed - Simplify TokenListController initialization ([#7740](MetaMask/core#7740)) - Bump `@metamask/storage-service` from `^0.0.1` to `^1.0.0` ([#7797](MetaMask/core#7797)) - Bump `@metamask/transaction-controller` from `^62.11.0` to `^62.13.0` ([#7775](MetaMask/core#7775), [#7802](MetaMask/core#7802)) - Bump `@metamask/preferences-controller` from `^22.0.0` to `^22.1.0` ([#7802](MetaMask/core#7802)) ### Removed - Removed token-search-discovery-controller package ([#7789](MetaMask/core#7789)) ``` [](https://codespaces.new/MetaMask/metamask-extension/pull/39887?quickstart=1) ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: null ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **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. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Dependency upgrade in a core controllers package can change token/balance behavior and introduces transitive version shifts; risk is mitigated by being a targeted bump intended to pick up a bugfix release. > > **Overview** > Bumps `@metamask/assets-controllers` from `^99.0.0` to `^99.3.1` and refreshes `yarn.lock` to resolve to `99.3.1`. > > Removes the Yarn patch previously applied to `@metamask/assets-controllers@93.1.0` (and its patched exchange-rate precision changes), relying on upstream package fixes instead; lockfile also reflects updated transitive constraints (e.g., pinning `@metamask/core-backend` to `5.0.0` and newer controller deps). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 7457931. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net>
… cp-13.18.0 (#39887) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. [skip-e2e] --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR bump `@metamask/assets-controllers` from `^99.0.0` to `^99.3.1`. The current resolved version in the `yarn.lock` is `99.1.0`, which includes a change that introduces a bug with Tempo native balances. A fix has been released in `99.3.1`, so we need to bump to that version to get the fix. The cherry-pick into `13.18.0` is necessary as it includes the affected version of `@metamask/assets-controllers`, and we don't want it to reach production. ```markdown ## [99.3.1] ### Fixed - Remove `Tempo Testnet` multicall address ([#7858](MetaMask/core#7858)). ## [99.3.0] ### Added - Add optional `rwaData` support when adding tokens in `TokensController` ([#7804](MetaMask/core#7804)). ### Changed - Lock `@metamask/core-backend` to `5.0.0` ([#7852](MetaMask/core#7852)) - Bump `@metamask/profile-sync-controller` from `^27.0.0` to `^27.1.0` ([#7849](MetaMask/core#7849)) - Fix trending tokens showing incorrect market cap values by adding `usePriceApiData` parameter (defaults to `true`) to use price API data for accurate market data ([#7829](MetaMask/core#7829)) - Bump `@metamask/transaction-controller` from `^62.13.0` to `^62.15.0` ([#7832](MetaMask/core#7832), [#7854](MetaMask/core#7854)) ## [99.2.0] ### Added - Add `HYPEREVM` support ([#7790](MetaMask/core#7790)) - Add `HYPEREVM` in `SupportedTokenDetectionNetworks` - Add `HYPEREVM` in `SUPPORTED_NETWORKS_ACCOUNTS_API_V4` ### Changed - Simplify TokenListController initialization ([#7740](MetaMask/core#7740)) - Bump `@metamask/storage-service` from `^0.0.1` to `^1.0.0` ([#7797](MetaMask/core#7797)) - Bump `@metamask/transaction-controller` from `^62.11.0` to `^62.13.0` ([#7775](MetaMask/core#7775), [#7802](MetaMask/core#7802)) - Bump `@metamask/preferences-controller` from `^22.0.0` to `^22.1.0` ([#7802](MetaMask/core#7802)) ### Removed - Removed token-search-discovery-controller package ([#7789](MetaMask/core#7789)) ``` [](https://codespaces.new/MetaMask/metamask-extension/pull/39887?quickstart=1) ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: null ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **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. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Dependency upgrade in a core controllers package can change token/balance behavior and introduces transitive version shifts; risk is mitigated by being a targeted bump intended to pick up a bugfix release. > > **Overview** > Bumps `@metamask/assets-controllers` from `^99.0.0` to `^99.3.1` and refreshes `yarn.lock` to resolve to `99.3.1`. > > Removes the Yarn patch previously applied to `@metamask/assets-controllers@93.1.0` (and its patched exchange-rate precision changes), relying on upstream package fixes instead; lockfile also reflects updated transitive constraints (e.g., pinning `@metamask/core-backend` to `5.0.0` and newer controller deps). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 7457931. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net>
…3.18.0 (#39887) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. [skip-e2e] --> <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR bump `@metamask/assets-controllers` from `^99.0.0` to `^99.3.1`. The current resolved version in the `yarn.lock` is `99.1.0`, which includes a change that introduces a bug with Tempo native balances. A fix has been released in `99.3.1`, so we need to bump to that version to get the fix. The cherry-pick into `13.18.0` is necessary as it includes the affected version of `@metamask/assets-controllers`, and we don't want it to reach production. ```markdown - Remove `Tempo Testnet` multicall address ([#7858](MetaMask/core#7858)). - Add optional `rwaData` support when adding tokens in `TokensController` ([#7804](MetaMask/core#7804)). - Lock `@metamask/core-backend` to `5.0.0` ([#7852](MetaMask/core#7852)) - Bump `@metamask/profile-sync-controller` from `^27.0.0` to `^27.1.0` ([#7849](MetaMask/core#7849)) - Fix trending tokens showing incorrect market cap values by adding `usePriceApiData` parameter (defaults to `true`) to use price API data for accurate market data ([#7829](MetaMask/core#7829)) - Bump `@metamask/transaction-controller` from `^62.13.0` to `^62.15.0` ([#7832](MetaMask/core#7832), [#7854](MetaMask/core#7854)) - Add `HYPEREVM` support ([#7790](MetaMask/core#7790)) - Add `HYPEREVM` in `SupportedTokenDetectionNetworks` - Add `HYPEREVM` in `SUPPORTED_NETWORKS_ACCOUNTS_API_V4` - Simplify TokenListController initialization ([#7740](MetaMask/core#7740)) - Bump `@metamask/storage-service` from `^0.0.1` to `^1.0.0` ([#7797](MetaMask/core#7797)) - Bump `@metamask/transaction-controller` from `^62.11.0` to `^62.13.0` ([#7775](MetaMask/core#7775), [#7802](MetaMask/core#7802)) - Bump `@metamask/preferences-controller` from `^22.0.0` to `^22.1.0` ([#7802](MetaMask/core#7802)) - Removed token-search-discovery-controller package ([#7789](MetaMask/core#7789)) ``` [](https://codespaces.new/MetaMask/metamask-extension/pull/39887?quickstart=1) <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: null Fixes: 1. Go to this page... 2. 3. <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> <!-- [screenshots/recordings] --> <!-- [screenshots/recordings] --> - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] 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. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Dependency upgrade in a core controllers package can change token/balance behavior and introduces transitive version shifts; risk is mitigated by being a targeted bump intended to pick up a bugfix release. > > **Overview** > Bumps `@metamask/assets-controllers` from `^99.0.0` to `^99.3.1` and refreshes `yarn.lock` to resolve to `99.3.1`. > > Removes the Yarn patch previously applied to `@metamask/assets-controllers@93.1.0` (and its patched exchange-rate precision changes), relying on upstream package fixes instead; lockfile also reflects updated transitive constraints (e.g., pinning `@metamask/core-backend` to `5.0.0` and newer controller deps). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 7457931. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net>
Explanation
rwaDataonto tokens when metadata is updated.rwaDatathroughaddTokenso suggested assets can carry RWA data.rwaDatafrom the supplied argument instead of token metadata (which doesn't containrwaData)References
Checklist
Note
Medium Risk
Touches token state write paths (
addToken/watchAsset) and cache-to-state propagation, which can affect persisted token metadata and UI display ifrwaDatais set/cleared incorrectly, but scope is limited and covered by new tests.Overview
Adds optional
rwaDataplumbing toTokensControllertoken additions sowatchAsset/addTokencan persist RWA metadata, including allowingrwaData: undefinedto clear previously-stored RWA data on re-add.Also updates the TokenListController cache sync logic to key lookups by lowercased token address and to propagate cached
rwaDataonto existing tokens, with tests covering overwrite/clear behavior and cache-driven updates; changelog is updated accordingly.Written by Cursor Bugbot for commit cea397b. This will update automatically on new commits. Configure here.