core icon indicating copy to clipboard operation
core copied to clipboard

feat: use the new onAssetsMarketData handler

Open salimtb opened this issue 5 months ago • 3 comments

feat: use the new onAssetsMarketData handler

Explanation

Current State and Problem

The MultichainAssetsRatesController currently uses the deprecated onAssetsConversion handler to fetch asset market data from Snaps. This handler interface is outdated and doesn't align with the current Snaps SDK architecture, which has evolved to provide better separation of concerns and more robust data handling.

Solution

This PR updates the MultichainAssetsRatesController to use the new onAssetsMarketData handler instead of onAssetsConversion. This change:

  1. Improves handler interface: The new onAssetsMarketData handler provides a more standardized and reliable interface for fetching asset market data from Snaps
  2. Aligns with current SDK: Updates the controller to work with the latest Snaps SDK architecture
  3. Enhances maintainability: Uses the current best practices for Snaps integration

Dependency Updates

Alongside the main functional change, this PR also updates several Snaps-related dependencies across multiple packages to ensure compatibility and access to the latest features:

  • @metamask/snaps-sdk: ^7.1.0^8.1.0
  • @metamask/snaps-utils: ^9.4.0^10.1.0
  • @metamask/snaps-controllers: ^12.3.1^13.1.1

These updates are necessary because:

  • The new onAssetsMarketData handler is available in the updated SDK versions
  • The updated packages provide better performance and security improvements
  • Maintaining consistency across the codebase with the latest Snaps ecosystem

Package-Specific Changes

The changes affect multiple packages because they all depend on the Snaps ecosystem. Each package's changelog has been updated to reflect the specific dependency changes that apply to it, ensuring transparency for consumers.

References

  • Related to: Snaps SDK migration and handler interface improvements
  • Consumer impact: This change improves the reliability of asset market data fetching but maintains backward compatibility for the public API

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 communicated my changes to consumers by updating changelogs for packages I've changed, highlighting breaking changes as necessary
  • [x] I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

Note: All changelogs have been updated for the affected packages:

  • @metamask/assets-controllers
  • @metamask/account-tree-controller
  • @metamask/accounts-controller
  • @metamask/bridge-controller
  • @metamask/bridge-status-controller
  • @metamask/multichain-transactions-controller
  • @metamask/profile-sync-controller

salimtb avatar Jun 25 '25 21:06 salimtb

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​metamask/​snaps-utils@​11.0.0981007499100
Added@​metamask/​snaps-controllers@​14.0.1971007410050
Added@​metamask/​snaps-sdk@​9.0.09910076100100

View full report

socket-security[bot] avatar Jun 25 '25 21:06 socket-security[bot]

@metamaskbot publish-preview

salimtb avatar Jun 25 '25 22:06 salimtb

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "0.4.0-preview-ee33e55",
  "@metamask-previews/accounts-controller": "31.0.0-preview-ee33e55",
  "@metamask-previews/address-book-controller": "6.1.0-preview-ee33e55",
  "@metamask-previews/announcement-controller": "7.0.3-preview-ee33e55",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-ee33e55",
  "@metamask-previews/approval-controller": "7.1.3-preview-ee33e55",
  "@metamask-previews/assets-controllers": "69.0.0-preview-ee33e55",
  "@metamask-previews/base-controller": "8.0.1-preview-ee33e55",
  "@metamask-previews/bridge-controller": "33.0.1-preview-ee33e55",
  "@metamask-previews/bridge-status-controller": "32.0.0-preview-ee33e55",
  "@metamask-previews/build-utils": "3.0.3-preview-ee33e55",
  "@metamask-previews/chain-agnostic-permission": "1.0.0-preview-ee33e55",
  "@metamask-previews/composable-controller": "11.0.0-preview-ee33e55",
  "@metamask-previews/controller-utils": "11.10.0-preview-ee33e55",
  "@metamask-previews/delegation-controller": "0.5.0-preview-ee33e55",
  "@metamask-previews/earn-controller": "2.0.0-preview-ee33e55",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-ee33e55",
  "@metamask-previews/ens-controller": "17.0.0-preview-ee33e55",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-ee33e55",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-ee33e55",
  "@metamask-previews/foundryup": "1.0.0-preview-ee33e55",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-ee33e55",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-ee33e55",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-ee33e55",
  "@metamask-previews/keyring-controller": "22.0.2-preview-ee33e55",
  "@metamask-previews/logging-controller": "6.0.4-preview-ee33e55",
  "@metamask-previews/message-manager": "12.0.1-preview-ee33e55",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-ee33e55",
  "@metamask-previews/multichain-network-controller": "0.9.0-preview-ee33e55",
  "@metamask-previews/multichain-transactions-controller": "3.0.0-preview-ee33e55",
  "@metamask-previews/name-controller": "8.0.3-preview-ee33e55",
  "@metamask-previews/network-controller": "24.0.0-preview-ee33e55",
  "@metamask-previews/notification-services-controller": "12.0.0-preview-ee33e55",
  "@metamask-previews/permission-controller": "11.0.6-preview-ee33e55",
  "@metamask-previews/permission-log-controller": "3.0.3-preview-ee33e55",
  "@metamask-previews/phishing-controller": "12.6.0-preview-ee33e55",
  "@metamask-previews/polling-controller": "14.0.0-preview-ee33e55",
  "@metamask-previews/preferences-controller": "18.2.0-preview-ee33e55",
  "@metamask-previews/profile-sync-controller": "19.0.0-preview-ee33e55",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-ee33e55",
  "@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-ee33e55",
  "@metamask-previews/sample-controllers": "1.0.0-preview-ee33e55",
  "@metamask-previews/seedless-onboarding-controller": "1.0.0-preview-ee33e55",
  "@metamask-previews/selected-network-controller": "23.0.0-preview-ee33e55",
  "@metamask-previews/signature-controller": "31.0.0-preview-ee33e55",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-ee33e55",
  "@metamask-previews/transaction-controller": "58.1.0-preview-ee33e55",
  "@metamask-previews/user-operation-controller": "37.0.0-preview-ee33e55"
}

github-actions[bot] avatar Jun 25 '25 22:06 github-actions[bot]