core
core copied to clipboard
feat: use the new onAssetsMarketData handler
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:
- Improves handler interface: The new
onAssetsMarketDatahandler provides a more standardized and reliable interface for fetching asset market data from Snaps - Aligns with current SDK: Updates the controller to work with the latest Snaps SDK architecture
- 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
onAssetsMarketDatahandler 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
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
| Diff | Package | Supply Chain Security |
Vulnerability | Quality | Maintenance | License |
|---|---|---|---|---|---|---|
| @metamask/snaps-utils@11.0.0 | ||||||
| @metamask/snaps-controllers@14.0.1 | ||||||
| @metamask/snaps-sdk@9.0.0 |
@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.
{
"@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"
}