-
Notifications
You must be signed in to change notification settings - Fork 0
Feat/new srp onboarding carousel #52
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
## **Description** - enables the Solana and Non-EVM code by moving the code fence flags to the main set. - this change makes all the Solana and Non-EVM features available in main build. > [!NOTE] > The `keyring-snaps` is the code fence flag that allows for snaps like the `solana`, `bitcoin`, any keyring snap to work, the Solana snap and bitcoin snap are keyring-snaps. > This code fence has all the broad/general code for non-evm snaps, and then for specific network logic we have the solana, bitcoin etc... ## **Related issues** Fixes: the current feature is under code fencing, only available in our beta build, it has to be moved from beta to main set to be available in the next release. ## **Manual testing steps** ```gherkin Feature: Solana Scenario: user opens new app install Given the app is installed and wallet created When user lands on wallet screen Then user sees the new Solana feature announcement bottom sheet And user sees in the accounts list "add Solana account" And user sees in the network tab "Solana" Scenario: user opens updated app Given the app is updated with wallet already created When user logs in Then user sees the new Solana feature announcement bottom sheet And user sees in the accounts list "add Solana account" And user sees in the network tab "Solana" ``` ## **Screenshots/Recordings** ### **Before** #### Add account <img width="340" alt="add account screenshot" src="https://github.com/user-attachments/assets/2473cd0b-cfcd-4c4a-8f8e-73143e16315d" /> #### Select network <img width="340" alt="select network screenshot" src="https://github.com/user-attachments/assets/632f52cc-1013-4573-853d-178e372e220c" /> ### **After** #### New welcome bottom sheet <img width="340" alt="new welcome modal screenshot" src="https://github.com/user-attachments/assets/8124a0cd-e4b2-4daf-bdef-c08e7ff18516" /> #### Add account <img width="340" alt="add account screenshot" src="https://github.com/user-attachments/assets/5771e51a-6688-4d26-91df-7d7da622feba" /> #### Select network <img width="340" alt="select network screenshot" src="https://github.com/user-attachments/assets/54e3a06c-1d65-41dc-a2c2-eef8fb5a3c37" /> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] 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. --------- Co-authored-by: António Regadas <antonio.regadas@consensys.net> Co-authored-by: yande <110056475+Andepande@users.noreply.github.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com>
<!-- 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. --> ## **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 adds SEI’s network logo and native token logo to MetaMask Mobile. These additions aim to improve user recognition and interface clarity when interacting with the SEI network and its native token within the app. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to the MetaMask Mobile app 2. Navigate to the "Networks" section and locate SEI Network 3. Confirm that the SEI network logo is displayed correctly 4. Add SEI as a custom token (if not preloaded) 5. Verify that the SEI token logo appears as expected ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> <img width="250" alt="image" src="https://github.com/user-attachments/assets/208294f8-e701-4d87-a7b2-7c4f41137322" /> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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. Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com>
…the left (MetaMask#15335) <!-- 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. --> ## **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 fixes an issue in android only where if the destination token amount is a very long number it would only show the decimal part now we will show the same as iOS which would be the significant digit on the left first. It also truncates to 5 decimals max. ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MMS-2387 https://consensyssoftware.atlassian.net/browse/MMS-2395 ## **Manual testing steps** Android only 1. Go to Bridge 2. Request a quote for a dest token with 18 decimals (e.g. ETH) 3. The amount should show the left hand side significant digits rather than the right hand side decimals 4. Should also show 5 decimals max ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> <img width="815" alt="Screenshot 2025-05-14 at 2 51 36 PM" src="https://github.com/user-attachments/assets/ed3fc73f-1060-44e4-a74f-1912fd1e5d4a" /> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] 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 - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
…aMask#15132) <!-- 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. --> ## **Description** This PR adds the rough stablecoin lending deposit flow that we will iterate on. The flow is hardcoded to support only Ethereum mainnet and Base. The confirmation screen also contains partially mocked data (e.g. estimated annual rewards) for now. This mock data is temporary and will be replaced in a subsequent pass. ### Changes - Adds `EarnLendingDepositConfirmationView` - Updates `EarnInputView` to support stablecoin lending deposits - Updates `useEarnTokenDetails` to include token's `experience` to direct navigation to appropriate flow entry points - Adds new `EarnScreenStack` to `MainNavigator` <!-- 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? --> ## **Related issues** Jira ticket: [STAKE-1015: Build 2-step lending deposit confirmation flow](https://consensyssoftware.atlassian.net/browse/STAKE-1015) ## **Manual testing steps** Prerequisites: 1. Environment variables setup Ensure you have the following env vars set in your local `.js.env` file. ```ts ## Earn # Pooled-Staking export MM_POOLED_STAKING_ENABLED="true" # Stablecoin Lending export MM_STABLECOIN_LENDING_UI_ENABLED="true" ``` 2. Ensure you have DAI or USDC on Ethereum mainnet or Base Testing Steps 1. From the token list (home screen), click on a supported stablecoin (e.g. DAI or USDC) 2. Click on the stablecoin lending CTA's "Start earning" button. 3. On the Deposit input screen, enter a valid amount to deposit and click "Review" 4. You should be redirected to the Lending deposit confirmation screen. Note, this screen is using mock data which is why you see elements like "Aave v3 USDC Coin" as the receipt token. 5. If a token allowance increase is needed, you can click "Approve" to increase token allowance. If you don't need an allowance increase skip to next step. 6. Once the token allowance transaction goes through, click "Confirm" to deposit 7. Click "confirm" on the send bottom sheet that opens 8. Your deposit should be confirmed momentarily ## **Screenshots/Recordings** The recording is too large to upload directly to the PR. Please use this [link](https://drive.google.com/file/d/16RYU_S15254Abjrz-msv5Zo0BaCcrDc_/view?usp=drive_link) - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] 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-mobile/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.
## **Description** Fixes an alignment issue with `NetworkNavBar` where omitting a `onRightPress` callback would not render an `endAccessory` and misalign the navbar title. ## **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** <img width="442" alt="Screenshot 2025-05-16 at 11 57 10 AM" src="https://github.com/user-attachments/assets/392ed39d-a555-4691-959d-8138d5810600" /> ### **After** <img width="440" alt="Screenshot 2025-05-16 at 12 25 35 PM" src="https://github.com/user-attachments/assets/ecc0e406-9c9b-4b32-9cf2-710ba26e1052" /> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
…#15386) <!-- 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. --> ## **Description** Extracts swaps/bridge insufficient balance checks into a separate hook to consolidate the logic and keep code clean. <!-- 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? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to swaps 2. Input source token amount greater than current balance 3. See red balance text styling, insufficient balance button, and quotes not refreshing ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
<!-- 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. --> ## **Description** MetaMask/MetaMask-planning#3739 ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
## **Description** Add missing Snaps permission labels. ## **Related issues** Fixes: MetaMask/snaps#3158 ## **Manual testing steps** 1. Create a Snap with all permissions specified in the manifest (example provided in this PR). 2. Verify that permission labels are displayed correctly and none is missing. ## **Screenshots/Recordings** ### **Before** <img width="300" alt="Screenshot 2025-05-15 at 12 03 51" src="https://github.com/user-attachments/assets/e3ae1126-bef2-4337-b0e9-a6d5369ba795" /> ### **After** <img width="250" alt="Screenshot 2025-05-09 at 16 14 51" src="https://github.com/user-attachments/assets/05cd96ca-ef08-4751-9b84-b7bf84785bdb" /> <img width="250" alt="Screenshot 2025-05-16 at 14 54 01" src="https://github.com/user-attachments/assets/906a34f3-3b78-49a6-8f7e-0aaff6ff7dac" /> <img width="250" alt="Screenshot 2025-05-16 at 14 52 46" src="https://github.com/user-attachments/assets/47e09797-a265-437b-bc16-70f97780a0a1" /> ### ***Snap Manifest used for testing*** ```json { "version": "0.1.0", "description": "An example Snap written in TypeScript.", "proposedName": "TypeScript Example Snap", "repository": { "type": "git", "url": "https://github.com/MetaMask/template-snap-monorepo.git" }, "source": { "shasum": "uRfWyB6iNNrQvb/LrR6YtjlMauey+/eWjoAfbEqVqeA=", "location": { "npm": { "filePath": "dist/bundle.js", "packageName": "snap", "registry": "https://registry.npmjs.org/" } } }, "initialPermissions": { "endowment:page-home": {}, "snap_dialog": {}, "endowment:rpc": { "dapps": true, "snaps": false }, "snap_getBip32Entropy": [ { "path": ["m", "44'", "0'"], "curve": "secp256k1" }, { "path": ["m", "44'", "0'"], "curve": "ed25519" }, { "path": ["m", "44'", "0'"], "curve": "ed25519Bip32" } ], "snap_getBip32PublicKey": [ { "path": ["m", "44'", "0'"], "curve": "secp256k1" } ], "snap_getBip44Entropy": [ { "coinType": 1 }, { "coinType": 3 } ], "endowment:network-access": {}, "snap_manageState": {}, "endowment:name-lookup": { "chains": ["eip155:1"] }, "snap_notify": {}, "endowment:cronjob": { "jobs": [ { "expression": "5 4 30 12 *", "request": { "method": "execute" } } ] }, "endowment:ethereum-provider": {}, "snap_getEntropy": {}, "endowment:transaction-insight": {}, "wallet_snap": { "npm:@metamask/bip32-example-snap": { "version": "0.34.1-flask.1" }, "npm:@metamask/bip44-example-snap": { "version": "0.34.1-flask.1" } }, "endowment:lifecycle-hooks": {}, "snap_getPreferences": {}, "endowment:protocol": { "scopes": { "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1": { "methods": ["getBlockHeight", "getGenesisHash"] } } }, "endowment:signature-insight": {}, "endowment:webassembly": {} }, "platformVersion": "6.22.0", "manifestVersion": "0.1" } ``` ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
…15237) <!-- 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. --> ## **Description** This PR adds the restoration of first party snap accounts and imported srps when changing password. Changes: 1. added `restoreImportedSrp` `restoreSnapAccounts` to Vault.js and updated the change password logic to use these. 2. Added new tests to Vault 3. Fix deadlock that could happen when awaiting a promise in MultichainSnapClient. <!-- 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? 4. What is the improvement/solution? --> ## **Related issues** Fixes: MetaMask#15258 Fixes: MetaMask#15233 Resolves: https://consensyssoftware.atlassian.net/browse/MMMULTISRP-208?atlOrigin=eyJpIjoiMmM0MDMzNDRlYzdlNDJmZTg3ODNhMzUzNzlkOWZmZDIiLCJwIjoiaiJ9 ## **Manual testing steps** 1. Using a fresh wallet. 2. Create a new solana account 3. Import a private key 5. Import a qr hardware wallet 6. import a ledger wallet 7. Go to settings --> security 8. Go through change password 9. Login to the wallet and see that accounts are still there. ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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. --------- Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> Co-authored-by: Gustavo Antunes <17601467+gantunesr@users.noreply.github.com>
## **Description** Fixes chainChanged event not being fired when using the per-dapp-selected-network flags. Added minimal test coverage for Background Bridge to ensure the event will trigger and manually tested the behavior using local mobile build ## **Related issues** Fixes: MetaMask#15239 ## **Manual testing steps** Please follow the instructions in the [Github issue](MetaMask#15239) ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] 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. --------- Co-authored-by: Christopher Ferreira <104831203+christopherferreira9@users.noreply.github.com>
<!-- 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. --> ## **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 fixes an issue where the Bridge would crash if the user selected a destination token that had a small balance (e.g. appears as < 0.00001) ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MMS-2454 ## **Manual testing steps** 1. Go to Bridge 2. Select a dest token that displays "< 0.00001" 3. Bridge should not crash ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/96a8b740-c525-4042-9873-caffd0351c32 ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] 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 - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
## **Description** The purpose of this task is to make a security improvement for dapps permissions request. ## **Related issues** Fixes: MetaMask/mobile-planning#2096 ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/c6236e59-46ca-42ee-a37d-e53255e409e3 ### **After** https://github.com/user-attachments/assets/f11f4bc1-3f00-41e2-9b76-92f9e9f99b57 ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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. --------- Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com> Co-authored-by: kylanhurt <kylan.hurt@gmail.com>
…em (MetaMask#15418) ## **Description** The token list item should not always be pressable on the token detail page. This was a fragment from the initial implementation of the Asset Details page. The balance list item isn't intended to always be interactive, and should only be pressable when the token being pressed is a non native EVM asset (erc20) from the detail page. User reported getting navigated to an error screen when pressing this on certain Solana SPL tokens. This adds the option to disable this button, making the list item read only and non-interactive. This fixes the bug reported, but also the UX papercut of having a pressable element that doesn't do anything. ## **Related issues** Fixes: MetaMask#15345 ## **Manual testing steps** 1. Go to detail page for any token 2. Balance TokenListItem should not be pressable ## **Screenshots/Recordings** ### **Before** https://github.com/user-attachments/assets/819d842a-251d-4163-beb7-70596b02220f ### **After** https://github.com/user-attachments/assets/17385a1c-4ac9-47b2-9a48-e0d6d7a51a8d ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
<!-- 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. --> ## **Description** This PR removes code fences for Multi-SRP feature. ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
<!-- 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. --> ## **Description** As Solana is now enabled on main we needed to update the Carousel tests. Refactored the way we are using the testIDs to make it more maintainable Updated Snapshots and unit tests. <!-- 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? --> ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
…sk#15463) ## **Description** Capture exception instead of throwing an error at the getPersistentState. This is a re implementation of what we have at the base controller. This is the longer term solution: MetaMask/core#5545 ## **Related issues** Fixes: MetaMask#15453 ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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. --------- Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com>
…Mask#15425) <!-- 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. --> ## **Description** This PR improves the layout and spacing in the bridge screen for better user experience. The changes include: - Adjusting padding in BridgeView keypad container for improved layout - Hiding toggle accordion for EVM bridge pairs - Updating QuoteInfoModal styles for improved layout - Enhancing BridgeView layout with ScrollView for better content display - Improving skeleton loading styles in BridgeView and TokenInputArea - Updating QuoteDetailsCard tests to account for solana bridge ## **Related issues** Fixes: [MMS-2384](https://consensyssoftware.atlassian.net/browse/MMS-2384) ## **Manual testing steps** 1. Open the bridge screen 2. Verify the layout and spacing of all elements 3. Test the keypad container padding 4. Verify the toggle accordion is hidden for EVM bridge pairs 5. Check the QuoteInfoModal layout 6. Test scrolling behavior in BridgeView 7. Verify skeleton loading states ## **Screenshots/Recordings** ### **Before** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/3638ef75-dc30-40c7-9e5b-0466000fe1b4 ### **After** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/85a6301d-a113-4e55-b139-d219a6028f17 ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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. [MMS-2384]: https://consensyssoftware.atlassian.net/browse/MMS-2384?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
…5449) <!-- 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. --> ## **Description** * Fixes this bug MetaMask#14978 where actions sheet wasn't close after clicking on Send for Non-EVM accounts * Updates to the latest snap version <!-- 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? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Create a Solana Account 2. Click on send 3. Go back 4. Actions sheet should be closed and you should be back on the main screen ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
…its (MetaMask#15349) <!-- 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. --> MetaMask#15154 <!-- 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? --> ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
## **Description** This PR adds the `Copyable` component for snaps usage. ## **Related issues** Fixes: MetaMask/snaps#3303 ## **Manual testing steps** 1. Use the following code to test: ``` <Box> <Copyable value="0x1234567890123456789012345678901234567890" /> <Copyable value="0x1234567890123456789012345678901234567890" sensitive /> </Box> ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** App crashed before implementation ### **After**   ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
…MetaMask#15412) <!-- 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. --> ## **Description** For context here's the `tryUnsubscribe` function code ```js tryUnsubscribe<EventType extends Event['type']>( eventType: EventType, handler?: ExtractEventHandler<Event, EventType>, ) { if (!handler) { return; } try { this.unsubscribe(eventType, handler); } catch (e) { // Ignore } } ``` This should silence the Sentry error `Error: Subscription not found for event: NetworkController:stateChange` <!-- 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? --> ## **Related issues** Fixes: MetaMask#11025 ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
… fails (MetaMask#15398) <!-- 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. --> ## **Description** **Change summary** - Remove the fallback empty string for the notification id - Wrap display notification in a try/catch block. Add errors to Sentry breadcrumbs and do not dispatch a new Sentry exception event For context, here's the Notification interface where it describes how the notification id is used ```js export interface Notification { /** * A unique identifier for your notification. * * Notifications with the same ID will be created as the same instance, allowing you to update * a notification which already exists on the device. * * Defaults to a random string if not provided. */ id?: string; ``` <!-- 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? --> ## **Related issues** Fixes: MetaMask#14301 ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
## **Description** Updates notification e2e spec to handle clicking and viewing all the different notification items we support. ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MMASSETS-837 ## **Manual testing steps** N/A - this adds e2e test coverage. ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
<!-- 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. --> ## **Description** This PR update Plume's network logo. <!-- 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? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Open metamask-mobile 2. Go to https://chainlist.org/ 3. Add the Plume Network 4. After accepting, the update network logo should show up ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] 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-mobile/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.
## **Description** Due to a recent change now the ramps region is auto-selected, with this PR I'll update the affected test cases to handle this correctly. ## **Related issues** Fixes: Smoke e2e failing ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
<!-- 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. --> ## **Description** This branch adds support for the [Multichain API](https://github.com/MetaMask/metamask-improvement-proposals/blob/main/MIPs/mip-5.md) to the Flask build of the Extension. The existing API (via injected provider) should be completely unchanged. # (Very Briefly) What is the MetaMask Multichain API - Concurrent connection to any number of chains (no network switching) - Unified entry point for all chain ecosystems (EVM, BTC, Solana, Cosmos, Polkadot etc) - Accessible via [`window.postMessage()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage). Not accessible via an injected global like `window.ethereum` ### Key Documents/Standards _mip = MetaMask Improvement Proposal_ - [MIP-5](https://github.com/MetaMask/metamask-improvement-proposals/blob/main/MIPs/mip-5.md) (Overview of the Multichain API) - [CAIP-25](https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-25.md) (new connection request API) - [CAIP-27](https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-27.md) (new request API, envelope with target scope/chainId included) - [MIP-6](https://github.com/MetaMask/metamask-improvement-proposals/blob/main/MIPs/mip-6.md) (Overview of how the Multichain API’s EVM support diverges from the 1193 injected provider) ## **Manual testing steps** **(RECOMMENDED)** Use the [Multichain Test Dapp](https://metamask.github.io/test-dapp-multichain/latest/) NOTE: `window.postMessage` should be used as extensionId for mobile. - [Video Demo for Interacting w/ Multichain Test Dapp](https://drive.google.com/file/d/113iM80dZItEAGkobJkBh17h68Y5dgTS-/view) **OR** ``` yarn setup:flask ``` Then ``` yarn start:android:flask ``` or ``` yarn start:ios:flask ``` Setup event listener via dev tools ``` window.addEventListener('message', (event) => { const { target, data } = event.data; if ( target !== "metamask-inpage" || data?.name !== 'metamask-multichain-provider' ) { return; } console.log(data.data) }) ``` Send a multichain API request via dev tools ``` const caipPostMessage = (data) => { window.postMessage({ target: 'metamask-contentscript', data: { name: 'metamask-multichain-provider', data } }, location.origin) } // create session caipPostMessage({ jsonrpc: '2.0', method: 'wallet_createSession', params: { optionalScopes: {} } }) // get session caipPostMessage({ jsonrpc: '2.0', method: 'wallet_getSession', params: {} }) // revoke session caipPostMessage({ jsonrpc: '2.0', method: 'wallet_revokeSession', params: {} }) // invoke method caipPostMessage({ jsonrpc: '2.0', method: 'wallet_invokeMethod', params: { scope: 'eip155:1', request: { "method": "eth_blockNumber", "params": [], } } }) ``` [More detailed example of manual requests](https://docs.google.com/document/d/1uq7N8Pt5ZrBQiPa0QFoGYGCnvDeTwhNK3ilOqUGX9JQ/edit?usp=sharing) taken from [extension equivalent Add Multichain API to Flask work](MetaMask/metamask-extension#27782) ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] 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. ## **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. --------- Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> Co-authored-by: Jiexi Luan <jiexiluan@gmail.com> Co-authored-by: Cal Leung <cal.leung@consensys.net> Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com> Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Co-authored-by: Arthur Breton <arthur.breton@consensys.net> Co-authored-by: Alex Donesky <adonesky@gmail.com>
<!-- 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. --> ## **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? --> When Infura goes down, we want to automatically and invisibly redirect requests from Infura RPC endpoints to Quicknode endpoints. Some context: - There is not one central Quicknode RPC endpoint that all Infura requests will be forwarded to; rather, each Infura-supported chain gets its own Quicknode endpoint. All of the Infura RPC endpoints that Quicknode currently supports are: - Ethereum Mainnet - Linea Mainnet - Arbitrum Mainnet - Avalanche - Optimism (OP) Mainnet - Polygon Mainnet - Base Mainnet - These Quicknode endpoint URLs contain an API key, so to keep them secret, we assume they are stored in environment variables. - The failover behavior itself is already present in `@metamask/network-controller`, where a new `failoverRpcUrls` property has been added to the `RpcEndpoint` type. - In a previous commit, we already upgraded `@metamask/network-controller`, which also modified how requests are generally made so that failed requests are automatically retried (and retries are paused if there are too many consecutive failures). - To save money, the Quicknode endpoints will usually stay offline. When Infura goes down, we send a signal via Segment. By triggering a backend service this will cause Quicknode to come online. This takes a bit of time, so we need to account for this. - We also want to be able to control the behavior via a feature flag. Given this, this commit: - Adds a migration to fill in `failoverRpcUrls` for all supported Infura RPC endpoints in NetworkController state with Quicknode endpoints. - Listens for when Infura is unavailable (fails too many times) and creates a Segment event so that Quicknode can be automatically activated. - Configures NetworkController with a longer retry timeout for the block tracker. While Infura is down but we are waiting for Quicknode to come online, we don't want the failover logic to think that Quicknode is also down. This lengthened timeout will allow us to wait longer. - Adds some minimal UI to allow users to see that Infura endpoints have a failover URL assigned. The failover URL field is non-editable. - Listens for when the feature flag is turned on and off and calls appropriate methods in NetworkController to enable or disable the failover behavior. This also shows or hides the aforementioned UI. ## **Related issues** Closes MetaMask#14120. ## **Manual testing steps** There are 7 environment variables that you need to have set in `.js.env` before you begin. Please contact me in Slack and I will give them to you. Additionally, you will need to log in to LaunchDarkly, navigate to the Mobile environment, navigate to the `wallet-framework-rpc-failover-enabled` feature flag, click on `main - dev`, and enable the feature flag. ### Testing the UI changes 1. Check out this branch locally. 2. Run `yarn setup` or `yarn setup:expo` and then run `yarn watch`. 3. Open the app locally (simulator or physical device). 4. Set up an account if necessary. 5. Tap the network switcher and click on "Edit" next to "Ethereum Mainnet". 6. Next to "Infura", you should see a "Failover" tag, and under the "RPC URL" field, you should see a new field "Failover RPC URL" which should contain a truncated Quicknode URL. 7. Open the network switcher again. 8. Add "Avalanche C-Chain" (which is an Infura-supported "additional" network). 9. Next to "Infura", you should see a "Failover" tag, and under the "RPC URL" field, you should see a new field "Failover RPC URL" which should contain a truncated Quicknode URL. 10. Open the network switcher again. 11. Tap "Add a custom network". 12. Add a new network, such as "Flare Mainnet": https://chainlist.wtf/chain/14/. Type in a network name, add a new RPC URL, then type in the chain ID and the symbol. - Make sure to put the RPC URL first and then the RPC name, or else you won't be able to save. 13. Try switching to the new network. You should not see any errors doing so. 14. Click on the network switcher and edit Flare. You should not see a tag next to the name of the network, and you should not see a "Failover RPC URL" field beneath "RPC URL". 15. Open the browser and go to `docs.metamask.io`. 16. Tap the hamburger menu, go to "Wallet API", tap the menu again, go to "JSON-RPC API", tap the menu again, and go to `wallet_addEthereumChain`. 17. Click on "Connect MetaMask". 18. Scroll down and run the request (which should add Gnosis). Accept the approval and wait for the network to be switched to. 19. Tap back on the wallet view and open the network switcher. 20. Go to edit Gnosis. You should not see a tag next to the name of the network, and you should not see a "Failover RPC URL" field beneath "RPC URL". ### Testing the failover logic 1. Log into the MetaMask Developer portal. 2. Click on "Infura RPC" in the sidebar. 3. Click on the "All Endpoints" tab if not already selected. 4. Uncheck a network. Let's go with Linea Mainnet. Click "Save Changes". 5. Check out this branch locally. 6. We need to lower the time that the RPC failover logic waits before trying an unavailable endpoint. Open `Engine.ts` and add the following lines: ``` diff getRpcServiceOptions: (rpcEndpointUrl) => { const maxRetries = 4; const commonOptions = { fetch: globalThis.fetch.bind(globalThis), btoa: globalThis.btoa.bind(globalThis), }; if (getIsQuicknodeEndpointUrl(rpcEndpointUrl)) { return { ...commonOptions, policyOptions: { maxRetries, // When we fail over to Quicknode, we expect it to be down at // first while it is being automatically activated. If an endpoint // is down, the failover logic enters a "cooldown period" of 30 // minutes. We'd really rather not enter that for Quicknode, so // keep retrying longer. maxConsecutiveFailures: (maxRetries + 1) * 14, }, }; } return { ...commonOptions, policyOptions: { maxRetries, // Ensure that the circuit does not break too quickly. maxConsecutiveFailures: (maxRetries + 1) * 7, + circuitBreakDuration: 60 * SECONDS }, }; }, ``` 7. Run `yarn setup` or `yarn setup:expo`. 8. We need to add some logging. Open `node_modules/@metamask/network-controller/dist/rpc-service/rpc-service.cjs`. Look for `async function _RpcService_executePolicy` and then make these changes: ``` diff async function _RpcService_executePolicy(jsonRpcRequest, fetchOptions) { return await __classPrivateFieldGet(this, _RpcService_policy, "f").execute(async () => { + console.log('<- Sending request to', this.endpointUrl.toString(), 'with', fetchOptions); const response = await __classPrivateFieldGet(this, _RpcService_fetch, "f").call(this, this.endpointUrl, fetchOptions); if (response.status === 405) { throw rpc_errors_1.rpcErrors.methodNotFound(); } if (response.status === 429) { throw rpc_errors_1.rpcErrors.internal({ message: 'Request is being rate limited.' }); } if (response.status === 503 || response.status === 504) { throw rpc_errors_1.rpcErrors.internal({ message: 'Gateway timeout. The request took too long to process. This can happen when querying logs over too wide a block range.', }); } const text = await response.text(); + console.log('-> Received response from', this.endpointUrl.toString(), 'body', text); if (jsonRpcRequest.method === 'eth_getBlockByNumber' && ``` 9. Run `yarn watch` or `yarn watch:clean`. 10. Open the app locally (simulator or physical device). 11. Set up an account if necessary. 12. Once you are on the home screen, tap on the network switcher and choose Linea Mainnet. 13. In the terminal, you should start seeing lines like: ``` LOG <- Sending request to https://linea-mainnet.infura.io/v3/[REDACTED] with {"body": "{\"id\":6323405206068855,\"jsonrpc\":\"2.0\",\"method\":\"eth_blockNumber\",\"params\":[]}", "headers": {"Accept": "application/json", "Content-Type": "application/json"}, "method": "POST"} LOG -> Received response from https://linea-mainnet.infura.io/v3/<API_KEY> body project ID does not have access to this network, see https://infura.io/dashboard ``` as well as errors like: ``` ERROR [Error: PollingBlockTracker - encountered an error while attempting to update latest block: Error: Could not parse response as it is not valid JSON ``` 14. Wait about 2 minutes. After a while you should see: ``` LOG [MetaMask DEBUG]: Creating Segment event "RPC Service Unavailable" with chain_id_caip: "eip155:59144", rpc_endpoint_url: linea-mainnet.infura.io ``` and then something like: ``` LOG <- Sending request to https://compatible-late-dinghy.linea-mainnet.quiknode.pro/[REDACTED]/ with {"body": "{\"id\":6323405206068857,\"jsonrpc\":\"2.0\",\"method\":\"eth_blockNumber\",\"params\":[]}", "headers": {"Accept": "application/json", "Content-Type": "application/json"}, "method": "POST"} LOG -> Received response from https://compatible-late-dinghy.linea-mainnet.quiknode.pro/[REDACTED]/ body {"jsonrpc":"2.0","id":6323405206068857,"result":"0x11beec8"} ``` 15. Now switch back to the MetaMask Developer console and re-enable Linea Mainnet. 16. Switch to Ethereum Mainnet and then back to Linea Mainnet. 17. You should now start seeing: ``` LOG <- Sending request to https://mainnet.infura.io/v3/[REDACTED] with {"body": "{\"id\":6323405206068859,\"jsonrpc\":\"2.0\",\"method\":\"eth_blockNumber\",\"params\":[]}", "headers": {"Accept": "application/json", "Content-Type": "application/json"}, "method": "POST"} ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** Editing an Infura network: <img width="488" alt="Screenshot 2025-05-13 at 1 42 25 PM" src="https://github.com/user-attachments/assets/5df2e37b-303f-47f1-ae58-fb6825687a83" /> ### **After** Editing an Infura network:   Editing a custom network:  Here is a video that goes through all Quicknode-suppported Infura networks and then shows selecting a custom RPC endpoint vs. Infura RPC endpoint: https://github.com/user-attachments/assets/50fdddbb-2d88-4c7d-ac02-8e38371b2956 ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
<!-- 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. --> ## **Description** This PR adds an initial Root Route to the deposit feature ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/RAMPS-2374 https://consensyssoftware.atlassian.net/browse/RAMPS-2375 ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
<!-- 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. --> ## **Description** Refactors the `AccountConnect` and `AccountPermissions` components to use `CaipChainId` and `CaipAccountId` primitives rather than the existing `Hex` type. Also renames the `AccountSelectorList` component to `EvmAccountSelectorList`, and makes a duplicate version `CaipAccountSelectorList` that is `CaipAccountId` compatible. There shouldn't be any real user facing change, but there are likely a few slight non-functional discrepancies. ## **Related issues** Fixes: MetaMask/MetaMask-planning#4739 ## **Manual testing steps** 1. Go to the test dapp from the in-app browser 2. Connect 3. Change the selected accounts and networks 4. Make sure what is granted matches what was selected ---- 1. Go to the test dapp from the in-app browser 2. Connect 3. Unselect all networks 4. Unselect all accounts, then select an account 5. See that all networks matching the same ecosystem as the selected account were also selected 6. Make sure what is granted matches what was selected ---- 1. Go to the test dapp from the in-app browser when already granted permissions 2. Click the top right icon 3. Modify the permitted accounts and chains 4. Verify that the test dapp correctly reports these changes 7. (You may have to use the Safari Developer tool to manually make a wallet_getPermissions call to see the contents of the resulting eth_accounts and permitted-chains permissions) ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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. --------- Co-authored-by: ffmcgee <joao.carlos@consensys.net> Co-authored-by: ffmcgee <jc.992@hotmail.com> Co-authored-by: ffmcgee <51971598+ffmcgee725@users.noreply.github.com> Co-authored-by: Alex Donesky <adonesky@gmail.com>
…9.0`, `23.5.0` (MetaMask#15490) <!-- 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. --> ## **Description** This PR bumps: - `@metamask/controller-utils` from `11.8.0` to `11.9.0` - `@metamask/network-controller` from `23.4.0` to `23.5.0` These two bumps are required to Improves handling of HTTP status codes in rpc-service to prevent unnecessary circuit breaker triggers. - HTTP 4XX responses (e.g. rate limit errors) will no longer trigger the circuit breaker policy. <!-- 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? --> ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
<!-- 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. --> ## **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? --> Set CODEOWNERs for multichain accounts ## **Related issues** Fixes: None ## **Manual testing steps** Not applicable ## **Screenshots/Recordings** applicable ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
<!-- 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. --> ## **Description** This PR fixes the issue where pressing show accounts in the bottom sheet of the AddNewAccount does nothing. Changed: 1. `AddNewAccount` now uses the SrpListItem when displaying only one keyring. 2. Css styles of `AddNewAccount` and `SrpListItem` 3. Add testId prop to `SrpListItem` <!-- 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? 4. What is the improvement/solution? --> ## **Related issues** Fixes: MetaMask#15403 Fixes: https://consensyssoftware.atlassian.net/browse/MMMULTISRP-174?atlOrigin=eyJpIjoiYWRkYTUzMTUxN2QwNGZjOThhZTY5NTg0OTI5NjFmZDkiLCJwIjoiaiJ9 ## **Manual testing steps** 1. Have 2 srps in the wallet 2. AccountActions and click on Ethereum account 5. click 'show accounts' 6. See that the account list is expanded. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** https://github.com/user-attachments/assets/a8b80f61-dc27-4d5d-9f7c-011a05dbffa2 <!-- [screenshots/recordings] --> ### **After** https://github.com/user-attachments/assets/617b8cca-426b-4f7a-9d3c-a6cfd9d93bba <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
<!-- 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. --> ## **Description** This PR updates the addDiscoveredAccounts to use createAccount from the MultichainWalletSnapClient. It will provide the correct first party snap name. Changes: 1. `addDiscoveredAccounts` uses the `createAccount` from the MultichainWalletSnapClient <!-- 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? --> ## **Related issues** Fixes: MetaMask#15399 Resolves: https://consensyssoftware.atlassian.net/browse/MUL-209?atlOrigin=eyJpIjoiMjdlNTQxYTVmYjNkNDQ3ZmFlODFlMzllMTZkYTNkMDEiLCJwIjoiaiJ9 ## **Manual testing steps** 1. Create a brand new wallet 2. Import a SRP 3. See that the Solana account names are correct and not. `Solana Account 1 2` ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
<!-- 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. --> ## **Description** We need to include the new NativeRampsSdk to provide the necessary methods for interacting with Transak's White Label API. <!-- 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? --> ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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. --------- Co-authored-by: George Weiler <georgejweiler@gmail.com>
## **Description** Add EXPO pipelines to make it easier: - `expo_main_pipeline` ## **Related issues** Fixes: NA ## **Manual testing steps** 1. Run Bitrise commands and see 3 executables ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** [Main build](https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/3ab78c4b-a422-410a-a567-fa43850461d2) ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
## **Description** Update dapp connection flows to prepare for Solana integration Latest passing [regression tests](https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/d46084c9-f99f-4de5-a5ec-0980c3a27f11) ## **Related issues** Related to: [4808](MetaMask/MetaMask-planning#4808) ## **Manual testing steps** 1. Goto the browser tab and goto any dapp (e.g https://metamask.github.io/test-dapp/) 2. Click on "Connect" and observe the new flow. 3. Update accounts connected by selecting the "Edit Accounts" text at the bottom OR the original way by clicking the permissions tab then clicking on accounts permissions 4. From the "Permissions Tab" connect /disconnect networks and observe that things are working as before 5. Test connections between dapps with many accounts and networks and observe things are working as normally ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** NA ### **After** https://github.com/user-attachments/assets/ca14e71a-6c4d-4b09-ae45-07e433dc225c ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] 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.
…ansactions (MetaMask#15329) ## **Description** Adding confirmation page for dapp request to upgrade+batched transactions ## **Related issues** Fixes: MetaMask/MetaMask-planning#4804 ## **Manual testing steps** 1. Enable 7702 locally 2. Go to test dapp 3. Submit send calls request and check confirmation page that opens ## **Screenshots/Recordings** https://github.com/user-attachments/assets/325824ea-9cee-44f5-a9dc-7fe6adcf6330 ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
…enu interaction (MetaMask#15301) - Refactored PortfolioHomePage to utilize WebID selectors for the connect wallet button and added a new burger menu element. - Implemented tapBurgerMenu method for interaction with the burger menu. - Updated PortfolioPage selectors to include WebID references for better element identification in tests. <!-- 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. --> ## **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? --> ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
…t if env variable MM_SMART_ACCOUNT_UI_ENABLED is not enabled. (MetaMask#15537) ## **Description** Fix hook useEIP7702Networks to not check for atomic batch support if env variable MM_SMART_ACCOUNT_UI_ENABLED is not enabled. ## **Related issues** NA ## **Manual testing steps** NA ## **Screenshots/Recordings** NA ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
## **Description** PR to fix a re-render issue on the main balance where it was displaying zero balance for a little while then it resolves to showing the correct balance. ## **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] --> https://github.com/user-attachments/assets/1cfb876d-62a6-4517-8633-667517df433a ### **After** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/2c81cce0-fe5a-4877-8f6c-34839028f7e8 ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
…etaMask#15543) <!-- 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. --> ## **Description** Test was renamed to `e2e/specs/wallet/portfolio-connect.spec.js`. <!-- 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? --> ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
<!-- 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. --> ## **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 aims to make legacy approval transaction multichain ready. Branch tested both against both `main` and `feat-4144-per-dapp-updated-from-main-april-7th` recordings below. ## **Related issues** Fixes: MetaMask#14915 ## **Manual testing steps** See the task for detailed manual testing steps. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** Test against `feat-4144-per-dapp-updated-from-main-april-7th` part 1 https://github.com/user-attachments/assets/e2ee8681-759e-45c6-b952-cb6ac1c1c0a9 Test against `feat-4144-per-dapp-updated-from-main-april-7th` part 2 https://github.com/user-attachments/assets/00762115-513a-4ae4-b2c6-08b8c8d4005a Test against `main` https://github.com/user-attachments/assets/b9a686c7-914f-416c-a6ad-6688d15eff18 ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
…k#15548) <!-- 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. --> ## **Description** This pr passes the missing entropySource for the default account created during discoverAccounts. <!-- 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? --> ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MUL-234 ## **Manual testing steps** 1. Create a fresh wallet 2. Import a srp with out any solana accounts 3. See that there is a default solana account created. ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
…aMask#15545) <!-- 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. --> ## **Description** Fixes a rare edge-case where invoking token refreshes with a network that is missing a currency rate causes the app to crash. This also adds a small performance improvement to update token exchange rates in batch. ## **Related issues** Fixes: MetaMask#15006 ## **Manual testing steps** N/A - I've not found a nice way to replicate this sentry error. ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
## **Description** Reduces Wallet > ScrollableTabView rerenders by moving the `renderComponent` callback into a separate component that can use `React.memo` Attached is are some recordings that analyse the before and after renders. ## **Related issues** Fixes: MetaMask#14851 ## **Manual testing steps** You can monitor performance by using react dev tools and swapping to popular networks/single networks ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** Before Analysis https://www.loom.com/share/e549e90507e443d1875bc4e01ad2906f ### **After** After Analysis https://www.loom.com/share/a7543c599c14411f9c3589ae6bdb8320?sid=740ae3d2-8db1-482c-8afa-eea8f98d5648 ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
<!-- 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. --> ## **Description** Adds coverage for E2E Segment events for a successful swap <!-- 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? --> ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
…ing Redux actions (MetaMask#15474) <!-- 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. --> ## **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 is a follow up for the task on providing a tool for identifying performance issues related to Redux dispatches. The tool/plugin - [redux-devtools-expo-dev-plugin](https://github.com/matt-oakes/redux-devtools-expo-dev-plugin) is designed to work with `Expo` as a plugin. To access the tool, `shift+m` in the watcher window and select `Open redux-devtools-expo-dev-plugin` to open the debugger in the browser. Watcher window with plugin option <img width="440" alt="image" src="https://github.com/user-attachments/assets/05fcf8e7-0af9-4712-9127-c0ffd27c933b" /> Example view of debugger <img width="1256" alt="image" src="https://github.com/user-attachments/assets/7b673039-325d-4eee-a993-9597b352ac4b" /> ## **Related issues** Fixes: MetaMask#15028 ## **Manual testing steps** Reference description above ## **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** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] 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.
…/swap (MetaMask#15409) ## **Description** PR fixes couple identified issues when the user attempts to swap/bridge and clicks on the "i" icon to view asset details page. Related core PR: MetaMask/core#5833 ## **Related issues** Fixes: MetaMask#15407 ## **Manual testing steps** Swap scenario 1. Select solana 2. Click on the button in the buttom middle of the screen 3. Click on Swap 4. Click on the pre-filled "to" asset 5. Click on the "i" icon that appears in front of any other token 6. You should be redirected to the asset details page successfully Bridge scenario starting on EVM network 1. Select Ethereum EVM network 2. Click on the button in the buttom middle of the screen 3. Click on Bridge 4. Click on bridge to 5. Choose solana 6. Click on the "i" icon that appears in front of any other token 7. You should be redirected to the asset details page successfully Bridge scenario starting on solana network 1. Select Solana 2. Click on the button in the buttom middle of the screen 3. Click on Bridge 4. Click on bridge to 5. Choose Ethereum 6. Click on the "i" icon that appears in front of any other token 7. You should be redirected to the asset details page successfully ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> Swap scenario: https://github.com/user-attachments/assets/c8ba4527-12c2-431e-acb9-f4e898932734 Bridge scenario: https://github.com/user-attachments/assets/2a6d5951-55cd-4c37-bf76-8ca1aa46c483 https://github.com/user-attachments/assets/7cdab024-6b89-46e9-b26c-c145bc8c1501 ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
<!-- 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. --> ## **Description** Remove `yarn.lock` from `CODEOWNERS` to simplify PR reviews for dependency changes, mirroring the extension setup.
…ask#15556) <!-- 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. --> ## **Description** These polling hooks were selecting and returning results, which were never used by the Provider. Because of this, the provider was re-rendering when the hook selectors changed. This does not happen now. <!-- 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? --> ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MMASSETS-844 ## **Manual testing steps** N/A, just test that Assets are working correctly. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before**  ### **After**  https://www.loom.com/share/53070c0eee9a462ab5515e6953fb387a?sid=b1f0e39d-e1e8-4577-886d-d3a39d10d724 ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/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.
…Mask#15413) (MetaMask#15415) <!-- 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. --> ## **Description** These changes come from MetaMask#15413 from Daniel at Margelo 1. Using `expo-filesystem` will make this around ~20 times faster for Android and ~5 times faster for iOS 2. As result TTI to login screen dropped from ~3s to ~2s for mid-range Android phone and it's quite noticeable for end user I would recommend also migrate rest of usages of RNFS to `expo-filesystem` in your app. It shouldn't be hard and it should be able to replace also `react-native-blob-util`. ## **Related issues** Fixes: MetaMask#15560 ## **Manual testing steps** 1. Start the app 2. It should start about ~1s faster then before for mid range Android phones ## **Screenshots/Recordings** https://github.com/user-attachments/assets/342523f7-a26b-46d4-8cdf-402a8d5b4bfb ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] 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. <!-- 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. --> ## **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? --> ## **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 Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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. --------- Co-authored-by: Daniel Suchý <suchydan@gmail.com>
<!-- 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. --> ## **Description** This PR adds e2e test coverage for the transaction activity and below is the test scenario - 1. Login to the application, click on the popular network drop down. 2. Navigate to the token details page, ensuring that the selected network is Ethereum. 3. Initiate the send flow from the token details page. 4. Validate to the switch modal should appear and click on "Got it" button(ensure the button is functional and clickable) 5. Complete the transaction and verify that the transaction history screen is displayed. <!-- 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? --> ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MMQA-476 ## **Manual testing steps** Execute the test locally and validate pipeline should pass ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] 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.
Co-authored-by: smgv <gpatra1996@gmail.com>
fix: remove unused variables
CLA Signature Action: Thank you for your submission, we really appreciate it. We ask that you all read and sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just by adding a comment to this pull request with this exact sentence:
By commenting with the above message you are agreeing to the terms of the CLA. Your account will be recorded as agreeing to our CLA so you don't need to sign it again for future contributions to this repository. 26 out of 37 committers have signed the CLA. |
Description
Related issues
Fixes:
Manual testing steps
Screenshots/Recordings
Before
After
Pre-merge author checklist
Pre-merge reviewer checklist