-
Notifications
You must be signed in to change notification settings - Fork 628
feat: Unblock wallet_switchEthereumChain
#2634
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: Unblock wallet_switchEthereumChain
#2634
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2634 +/- ##
=======================================
Coverage 98.07% 98.08%
=======================================
Files 398 399 +1
Lines 10976 10991 +15
Branches 1728 1731 +3
=======================================
+ Hits 10765 10780 +15
Misses 211 211 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
2a66d50 to
fd11f16
Compare
|
@metamaskbot update-pr |
|
No dependency changes detected. Learn more about Socket for GitHub. 👍 No dependency changes detected in pull request |
|
@SocketSecurity ignore npm/@metamask/[email protected] This is ours. |
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.
In the future we could consider full support for wallet_switchEthereumChain, and actually updating the provider configuration etc., but for now this simply makes the wallet_switchEthereumChain method always return null.
f2aa83e to
1dcbeda
Compare
|
@SocketSecurity ignore npm/[email protected] Only used for development / testing, and pending update in another PR. @SocketSecurity ignore npm/@metamask/[email protected] This is ours. |
| */ | ||
| export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { | ||
| const { chainId = '0x1' } = (request.params as BaseParams) ?? {}; | ||
| await switchChain(chainId); |
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.
probably not a problem, but i think always using mainnet makes it possible in the extension e2e tests that use this snap to try to hit the mainnet infura endpoint, but I think that's probably only the case if something triggers getGasPrice and i'm not certain there is an extension e2e test that does that. Just pointing this out in case I am wrong
packages/snaps-simulation/src/middleware/internal-methods/switch-ethereum-chain.ts
Outdated
Show resolved
Hide resolved
|
sorry, I realize this PR is still marked as draft, so sorry for the early nit comments |
736f8f1 to
afa3bc5
Compare
607162c to
5e27ac2
Compare
3612252 to
ff78991
Compare
838ce80 to
31ffcbf
Compare
Like with websites, we want to support a custom network per Snap rather than relying on the globally selected network. For Snaps, the permission for the network to switch to is automatically granted. [](https://codespaces.new/MetaMask/metamask-extension/pull/26389?quickstart=1) 1. Copy the build files for `@metamask/selected-network-controller` from [this PR](MetaMask/core#4602). 2. Copy the build files for `@metamask/snaps-controllers` and `@metamask/snaps-execution-environments` from [this PR](MetaMask/snaps#2634). 3. Run `test-snaps` for the PR above (`yarn start` in `packages/test-snaps`). 4. Install the Ethereum Provider Example Snap. 5. Switch the chain ID using the `test-snaps` button for the Ethereum Provider example. 6. The Snap should now use the new network, without any permission requests. Step 1 and 2 are no longer necessary once these PRs are merged and released. <!-- 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/develop/.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/develop/.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.
This removes
wallet_switchEthereumChainfrom theBLOCKED_RPC_METHODSlist.Closes MetaMask/MetaMask-planning#2938.
Closes #2654.
Blocked by: