Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 7.38.0 #12671

Draft
wants to merge 110 commits into
base: stable
Choose a base branch
from
Draft

feat: 7.38.0 #12671

wants to merge 110 commits into from

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Dec 12, 2024

This is the release candidate for version 7.38.0. The changelog will be found in another PR chore/7.38.0-Changelog.

Team sign-off checklist

  • Accounts
  • Assets
  • Confirmations
  • Dev-Ops
  • Hardware Wallets
  • Identity
  • Mobile Platform
  • Notifications
  • QA
  • Snaps Platform
  • Stake
  • Swaps
  • Tiger
  • Transactions
  • Wallet Framework
  • Wallet UX

Reference

vinistevam and others added 30 commits November 29, 2024 13:55
<!--
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**
Use the mock server to create E2E tests for transactions and signatures
to test the Security Alert API responses.
<!--
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/mobile-planning#1813

## **Manual testing steps**

1. Bitrise

## **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 fixes an issue where the source property was not being set
correctly when an error occurred during local PPOM validation.
Previously, if the local PPOM failed, the error handling mechanism would
add an error message but omit the source property, making it unclear
whether the error originated from the API or the local PPOM.

**Changes introduced:**
- Modified error handling for the local PPOM validation to ensure that
the source property is correctly set to "local" when an error occurs
during local validation.
- Ensured that the source property is properly set to "api" in case of
an API failure.

<!--
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/mobile-planning#2058

## **Manual testing steps**

1. Go to the live test dapp
2. Trigger a send transaction with suggested gas values (ie Send Legacy
or send EIP1559)
3. Check Segment

Obs: We need to block the network calls for
`https://security-alerts.api.cx.metamask.io/` and
`https://static.cx.metamask.io/api/v1/confirmations/ppom/ppom_version.json`
in the Chrome dev tools > network tab.

## **Screenshots/Recordings**


[security-alerts-local.webm](https://github.com/user-attachments/assets/f1fbfe8c-b7ca-4056-99ff-06ab5a9cba6a)

<!-- 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.
…tions,Events}` (#12407)

## **Description**

The `GlobalActions` and `GlobalEvents` types have not been updated to
keep up with the controller V2 upgrades. This commit adds missing
entries and fixes redundant, outdated, or erroneous entries.

All changes in this commit are purely at the type-level with no impact
on runtime behavior.

## **Related issues**

- Follow-up to controller V2 upgrades:
MetaMask/MetaMask-planning#3234
- Blocks #10441

## **Manual testing steps**

## **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
- [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.
…12348)

## **Description**

The engine context and background state currently include three
"non-controllers" with empty/non-existent state:
`AssetsContractController`, `NftDetectionController`,
`TokenDetectionController`.

These should be included in the engine context, but excluded from any
representations of background state. This is not a disruptive change, as
there are no downstream references to the state objects or state
properties of these non-controllers.

For more information on non-controllers, see:
-
https://github.com/MetaMask/decisions/blob/main/decisions/core/0001-messaging-non-controllers.md
-
https://github.com/MetaMask/decisions/blob/messaging-components-abstraction/decisions/core/0004-messaging-components-abstraction.md#background

## **Related issues**

- Blocks #10441
- This ticket will remove non-controller entries from the engine
datamodel and state getter method.

## **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.
…al prop (#12405)

## **Description**

The active network icon in the header has too much margin and is
misaligned with the network title.

I have also added an optional prop of `networkName` that allows
developers to pass in the network name of their choice. This is in
preparation of
[multichain](#12256)
support, currently we are showing the selected network name, in
multichain we want to be able to pass in a network name and not the
selected chain.

## **Related issues**
Fixes: 

## **Manual testing steps**
1. Goto asset details, swaps, or buy. Basically any screen that has the
header with network name
2.
3.

## **Screenshots/Recordings**
(green icon at the very top)
| Before  | After  |
|:---:|:---:|

|![asset_details_ios_before](https://github.com/user-attachments/assets/26de61bb-a217-456f-9d40-8bc552f4b1ec)|![asset_details_ios_after](https://github.com/user-attachments/assets/a4d4667b-4b1f-485c-a9f9-ef78872da772)|

### **Before**

NA

### **After**

NA

## **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?
-->

Introduction of `@metamask/remote-feature-flag-controller` library.

Remote feature flag controller manages data flow, retry policy, and
cache expiry.
The controller consumer manages default values, data persistency, and
data distribution.

See
[ADR](https://github.com/MetaMask/decisions/blob/b3094d47a568ac1e076a44fa704c2d29d1b59f35/decisions/wallet-platform/0001-remote-rollout-feature-flags.md)
for a in-depth description

## Technical decisions

### Controller init on `Engine.ts` with feature flags fetching only on
cold app starts.

`@metamask/remote-feature-flag-controller` is only asked to fetch
feature flags after its init in `Engine.ts`. Ensures feature flags are
only fetched on cold app starts.

### Fallback values

Default values are used when remote feature flags are undefined.
The fallback mechanism is implemented by each feature flag selector
`app/selectors/featureFlagsController/<featureFlagName>`

In this PR we include `minimumAppVersion` selector, which manages the LD
feature flag `mobile-minimum-versions`

### One selector per each feature flag

[LD feature flags can be boolean, number, strings on JSON
objects](https://docs.launchdarkly.com/sdk/concepts/flag-types#understanding-flag-types).
We've decided to have each feature flag with its own selector

A feature flag selector contains:
- state selectors for each feature flag value.
- business logic
- defaults for when feature flags values are undefined.
- TS types.
- unit tests and mocked data.

This architecture offers a clear separation between each feature flag
and the logic behind it, allowing easier manipulation.
Code owners are assigned to each feature flag.

### 

## **Related issues**

Fixes: MetaMask/mobile-planning#2054
Fixes: MetaMask/mobile-planning#1975

## **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: Nico MASSART <[email protected]>
Co-authored-by: tommasini <[email protected]>
<!--
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 does enables the creation of Bitcoin (Mainnet and Testnet)
accounts on MetaMask mobile. This is done via the
[snap-bitcoin-wallet](https://github.com/MetaMask/snap-bitcoin-wallet)
which is included as a preinstalled snap. The added UI buttons to the
account actions communicate with the snap, then the snap is routed
through our SnapKeyring handlers to enable custom account names.

This is just the first step and does not include all of the necessary
logic/UI to launch this feature. This PR simply enables Bitcoin account
creation and renders the proper BTC address and network in the wallet
view.

### How
- adds the [Snap Bitcoin
Wallet](https://github.com/MetaMask/snap-bitcoin-wallet) as a pre
installed snap
- added the `BitcoinWalletSnapSender` which allows us to communicate
with the bitcoin snap
- added the Bitcoin Logo to the assets and conditionally render them on
the wallet view if the selected account is BTC. This is just visual and
is a disabled button. This also does not change any other network
related logic elsewhere in the app.
- renamed `selectSelectedInternalAccountChecksummedAddress` to
`selectSelectedInternalAccountFormattedAddress` since bitcoin addresses
are not checksummed.
- instead of eagerly checksumming addresses, I conditionally checksum
them based on wether the address is EVM or not. this is done with the
`toFormattedAddress` in `app/util/address/index.ts` and
`getFormattedAddressFromInternalAccount` in
`app/core/MultiChain/utils.ts`
- added selector `hasCreatedBtcMainnetAccount` and
`hasCreatedBtcTestnetAccount`
- added new call to actions in the account actions menu for adding
Bitcoin accounts.
- added MultichainSettings to the root state to create a feature flag
for Bitcoin. This state can easily be expanded to support other chains
in the future. For now we have no way to setting this state to true as
this is feature is not production ready. Right now this state is is used
to hide the bitcoin feature in the wallet.

## **Related issues**

Fixes: MetaMask/accounts-planning#698

## **Manual testing steps**

### Testing the multichain feature flag
By default all the bitcoin related features should be hidden behind the
`bitcoinSupportEnabled` and `bitcoinTestnetSupportEnabled` which are set
to false by default and have no way of modifying them inside the UI.

To verify that these feature flags are working....

1. open `.js.env` and ensure that METAMASK_BUILD_TYPE is set to `flask`
2. run the app on this branch
3. complete onboarding 
4. click on your account
5. the account list menu should open with a CTA to add a new account
6. click `Add account or hardware wallet`
7. VERIFY that there are no new account actions (there should be no
option to add a bitcoin account)

### Turn on the bitcoin feature
1. navigate to `app/reducers/multichain/index.ts`
2. change the values in the `initialState` to be true
3. force close and reload the app
4. click on your account
5. the account list menu should open with a CTA to add a new account
6. click `Add account or hardware wallet`
7. You should now see the options to add a Bitcoin account and a bitcoin
testnet account.

### Adding a Bitcoin Testnet account
1. `ENSURE THAT YOU HAVE TURNED ON THE BTC FEATURE FLAGS` described in
the steps above.
2. open `.js.env` and ensure that METAMASK_BUILD_TYPE is set to `flask`
6. run the app on this branch
7. complete onboarding 
8. click on your account
9. the account list menu should open with a CTA to add a new account
10. click `Add account or hardware wallet`
11. then click `Add a new Bitcoin Account (Testnet)`
12. a bottom sheet should open with a text field pre filled with
`Bitcoin Testnet Account`
13. click `Add account`
14. the account should be added and selected on the wallet view.
15. if you go through the same steps (steps 4-6) the option to add a
Bitcoin testnet account should be disabled since you can only have one
BTC Test account.
16. Now that you are on the wallet view, verify that the address is
rendered in short form i.e `tb1qcv...4av3`
17. you will not see a balance rendered for this account since BTC
balances are not yet supported.
18. verify that the network that is displayed on the wallet view shows
the Bitcoin logo and that when you click it nothing happens.
19. verify that when clicking on the actions button in the bottom tab
bar opens a list of actions that are disabled (send, swap, bridge etc).
All of these features should be disabled for BTC
20. click on your account, when the account list opens up select one of
your ethereum accounts.
21. the Balance should render and the network should display the
ethereum network.
22. clicking on the network picker DOES open the network selector list

### Adding a Bitcoin Mainnet account
1. open `.js.env` and ensure that METAMASK_BUILD_TYPE is set to `flask`
3. run the app on this branch
4. complete onboarding 
5. click on your account
6. the account list menu should open with a CTA to add a new account
7. click `Add account or hardware wallet`
9. then click `Add a new Bitcoin Account (Beta)`
10. a bottom sheet should open with a text field pre filled with
`Bitcoin Account`
11. click `Add account`
12. the account should be added and selected on the wallet view.
13. if you go through the same steps (steps 4-6) the option to add a
Bitcoin Account should be disabled since you can only have one BTC
mainnet account.
14. Now that you are on the wallet view, verify that the address is
rendered in short form i.e `bc1qrw...atay`
15. you will not see a balance rendered for this account since BTC
balances are not yet supported.
16. verify that the network that is displayed on the wallet view shows
the Bitcoin logo and that when you click it nothing happens.
17. 15. verify that when clicking on the actions button in the bottom
tab bar opens a list of actions that are disabled (send, swap, bridge
etc). All of these features should be disabled for BTC
18. click on your account, when the account list opens up select one of
your ethereum accounts.
19. the Balance should render and the network should display the
ethereum network.
20. clicking on the network picker DOES open the network selector list

### Verify ETH account address formats
1. assuming you completed the above testing steps...
2. select your ethereum account from the account list
3. verify that when selected, the address is rendered in checksummed
format WITH a 0z prefix.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

N/A

### **After**


https://github.com/user-attachments/assets/96836574-7b12-4566-b70f-ea85efa3b663

<img
src="https://github.com/user-attachments/assets/c249775a-e8be-4d72-8c8f-8909d37ef876"
width="300" height="600" />


## **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**

The purpose of this PR is to temporarily disable the e2e tests added
[here](#12288) as it
introduces instability within the smoke pipeline.

## **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.
…#12199)

<!--
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 fix #10967 User able to add Ledger account with existing account
name.
Now the ledger Select accounts screen will display `Account Ledger 1
already exists`

## **Related issues**

Fixes: #10967 
#10188 


## **Manual testing steps**

1. Install MM
2. Recover from SRP
3. Rename 'Account 1' to 'Ledger 1'
4. Connect Ledger device
5. Add 1 Ledger account
6. `Account Ledger 1 already exists` error should be displayed


## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

![image](https://github.com/user-attachments/assets/21a8ee86-63e0-4db0-b784-a8490ceba80f)

<!-- [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**

The purpose of this PR is to:
1. Add some critical flow accounts e2e tests to the smoke pipeline
2. Fix glob for tests tagged SmokeCore
3. Fix Portfolio dapp connect test. 
## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
4.
5.

## **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**

Upgrades `@metamask/profile-sync-controller` to `^1.0.0`

This should be a smooth upgrade since the controller is currently unused
in mobile (disabled behind a flag)

## **Related issues**

Fixes: #12306

## **Manual testing steps**

N/A - this is purely a package upgrade with no additional changes.

Just ensure that we can start up the application without any issues.

## **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**
PR to add the multichain autodetection to mobile under a feature flag
<!--
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. run `PORTFOLIO_VIEW=true yarn watch`
2. run `yarn start:ios`
3. check if the tokens autodetection is multichained

## **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/c4428c82-5fb7-4701-8625-cf7bb36ee4be



## **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: sahar-fehri <[email protected]>
## **Description**

Added an assertion that the selected address would be the same as the
one derived from the SRP


## **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**

We currently have a few of our page object files lingering outside of a
specific folder. As part of our ongoing efforts to improve the
organization and maintainability of our test automation codebase, we
need to move Page Object files into their respective folders. This will
help streamline the project structure, making it easier for team members
to locate and manage the files. The folder where each of the remaining
files should be moved have to reflect the functionality or feature on
the app. This same structure should be reflected on the selectors
folder.

Files to relocate to the Onboarding folder:

- e2e/pages/EnableDeviceNotificationsAlert.js
- e2e/pages/modals/EnableAutomaticSecurityChecksView.js
- e2e/pages/modals/ExperienceEnhancerModal.js
- e2e/pages/modals/OnboardingWizardModal.js
- e2e/pages/modals/ProtectYourWalletModal.js
- e2e/pages/modals/SkipAccountSecurityModal.js
- e2e/pages/modals/TermsOfUseModal.js
- e2e/pages/modals/WhatsNewModal.js

## **Related issues**

Fixes: 

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**


https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/c8ecb663-d2d1-4522-a6e0-7145ba7bc1e7?tab=workflows

### **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**

This PR does a few things
1. Automatically set new PRs targeting main to "draft" state.
2. Enforce the E2E Bitrise Status Check on lifecycle on incoming PRs
which will essentially enforce that the PR has 1 of the two labels 'Run
Smoke E2E' or 'No E2E Smoke Needed'


<!--
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?
-->

With this change we're looking to improve the posture on our PR
lifecycle with auto drafts and enforce a higher standard for incoming
changes towards or E2E testing posture.

## **Related issues**

[Fixes:]

#11747

## **Manual testing steps**

UC1 : Nether E2E Label is set
->
https://github.com/MetaMask/metamask-mobile/actions/runs/11826040868/job/32951145968?pr=12243
    Expected : Not Mergeable

UC2 : docs PR

Should run: false, Reason: The pull request is documentation related.
Skipping Bitrise status check. due to the following reason: The pull
request is documentation related.
Created 'Bitrise E2E Status' check with skipped status for commit
dea08a9

https://github.com/MetaMask/metamask-mobile/actions/runs/11826187817/job/32951608300?pr=12243

Expected: Mergeable

UC3 : No E2E Smoke Needed Label is set

Anti label: true
Should run: false, Reason: The pull request has the anti-label.
Skipping Bitrise status check. due to the following reason: The pull
request has the anti-label.
Created 'Bitrise E2E Status' check with skipped status for commit
dea08a9[22]

https://github.com/MetaMask/metamask-mobile/actions/runs/11826234735/job/32951749305?pr=12243

Expected Mergeable


UC4: Smoke E2E Label is set

Should run: true, Reason: The smoke test label is present.
Starting Bitrise build for commit
dea08a9


## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

N/A CICD Changes only

### **After**

<!-- [screenshots/recordings] -->

N/A CICD Changes only

## **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: Cal Leung <[email protected]>
## **Description**

This PR is a draft and it still needs to

* ~Remove key-tree patch and update to the new release (still pending)~
* ~Remove eth-hd-keyring patch and install the latest release that
includes this [PR](MetaMask/accounts#102
* Updated patch version of Keyring Controller to 17.2.2 (Added a patch
to the Keyring Controller awaiting for the generation of random
mnemonic, that will be removed once this work is done, in this PR or
worst scenario, following up work)

App launch times pipeline:
https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/5b450f2a-91a3-4a94-8479-729655a2cf0b?tab=workflows

Follow up work:
* Remove patch of keyring controller added
* Decrease baseline of performance e2e pipeline (`app_launch_times`) for
android and ios (Android less than 2.9 seconds cold app start for wallet
view)

## **Related issues**

Fixes:

## **Manual testing steps**
Build used for testing:
https://app.bitrise.io/build/6ed111dd-6bbb-4492-a73e-a11347335e8e?tab=log

1. create new acount generating an SRP, ✅
2. create a new account when the SRP account is created ✅

https://github.com/user-attachments/assets/71a45633-6b2a-446f-ac7a-6aed99c97b54
3. import with SRP, ✅
4. add with private key,✅

https://github.com/user-attachments/assets/5ed51268-7b2a-47c1-abb7-1f1da19bda05
6. update the app (from v4) with 1 account imported via SRP ,✅

https://github.com/user-attachments/assets/2364461d-869f-40c5-85a4-ef2db3433ceb
7. update the app with 3 accounts (imported via SRP and private key and
added) ,✅

https://github.com/user-attachments/assets/fa452f36-48d8-4573-8c1f-d97a1938baf5


## **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.

---------

Co-authored-by: Charly Chevalier <[email protected]>
Co-authored-by: Nico MASSART <[email protected]>
…til (#12372)

## **Description**

* Added dpdm to measure circular dependencies:
https://github.com/acrazing/dpdm
* Fixed circular dependencies between engine -> network/utils
* Add script using dpdm to package json `circular:deps`

This still have circular deps between the new engineNetworkUtils and
Engine, they will be a follow up discussion, since the code in Engine
might not be needed anymore

PR -
https://www.notion.so/metamask-consensys/Remove-all-circular-dependencies-in-the-codebase-30-in-total-to-enable-HMR-and-React-Refresh-Mo-02737ed3b49c4702b8cb55fdb67020e8

## **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: Aslau Mario-Daniel <[email protected]>
## **Description**
Cold app start to wallet view decreased quality gate for 4 seconds
Warm app start to wallet view decreased quality gate for 3 seconds

Cold app start
1: 3430
2: 2987
3: 2769
4: 3693
5: 3386
6: 2898
7: 3509

Warm app start
1: 1950
2: 2564
3: 2011
4: 2791
5: 2198
6: 2173
7: 2524


Bitrise build:
https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/6cfecc21-427d-418a-a484-4852adde9921?tab=workflows
## **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.
#12534)

## **Description**

This PR takes care of all the necessary changes in order to decouple
"Profile Sync" from the notifications feature.
This also underlines the ownership change from @MetaMask/notifications
to @MetaMask/identity.

The changes made here will help transitioning to cleaner separation of
concerns when features leveraging profile sync will be released (i.e
Notifications, Account syncing...).

⚠️ This PR does not add missing tests nor introduces any changes. This
is only moving files around and separating concerns.

## **Related issues**

Fixes #12535

## **Manual testing steps**

No testing steps since this PR does not change the implementation of
existing features.

## **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.
<!--
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 aims to adapt `estimateGasFee` from `TransactionController` for
swaps `trade` and `approval` transactions. For more information please
see the extension PR applies same functionality:
MetaMask/metamask-extension#27612

Also adding basic unit tests for `QuoteView` screen.

<!--
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/mobile-planning#2026

## **Manual testing steps**

- Regression testing of internal swaps.
- Smart swaps and standard.
- Specific tests on Linea chains.

## **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**
Addresses a scenario where a commit has been evaluated already with
label existence but we want to re-evaluate the status check if the
labels change. Fail the E2E Status Check when there's no label present.

<!--
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:

Some edge-cases where labels may be retro-actively changed or removed
after a status check has been evaluated already

## **Manual testing steps**

CI/CD Testing PR scenario

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

N/A CICD Only

### **After**

N/A CICD Only

## **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.
## **Description**

We currently have a few of our page object files lingering outside of a
specific folder. As part of our ongoing efforts to improve the
organization and maintainability of our test automation codebase, we
need to move Page Object files into their respective folders. This will
help streamline the project structure, making it easier for team members
to locate and manage the files. The folder where each of the remaining
files should be moved have to reflect the functionality or feature on
the app. This same structure should be reflected on the selectors
folder.

Files to relocate to the Wallet folder:
- e2e/pages/AccountListView.js (this is not a complete view)
- e2e/pages/EditAccountNameView.js 
- e2e/pages/LoginView.js
- e2e/pages/TabBarComponent.js
- e2e/pages/TokenOverview.js
- e2e/pages/modals/AddAccountModal.js
- e2e/pages/modals/ToastModal.js
- e2e/pages/modals/AccountActionsModal.js
- e2e/pages/modals/NftDetectionModal.js
- e2e/pages/modals/WalletActionsModal.js

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

Regression
https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/c590e21e-b802-496e-96a7-19f927a20acd?tab=workflows

### **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**

The purpose of this PR is to create a specific tag for the MC tests. 

Here is the passing smoke tests:
https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/9d16606d-8a12-4f34-a3b8-1fec42140df3?tab=workflows

## **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 is the release candidate for version 7.36.0.
 
  # Team sign-off checklist
  - [ ] team-accounts
  - [ ] team-assets
  - [ ] team-confirmations
  - [x] team-design-system
  - [x] team-notifications
  - [ ] team-platform
  - [ ] team-security
  - [x] team-snaps-platform
  - [ ] team-sdk
  - [x] team-stake
  - [x] team-tiger
  - [ ] team-wallet-framework
  - [x] team-swaps

  # Reference
- Testing plan sheet -
https://docs.google.com/spreadsheets/d/1tsoodlAlyvEUpkkcNcbZ4PM9HuC9cEM80RZeoVv5OCQ/edit?gid=404070372#gid=404070372
## **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: metamaskbot <[email protected]>
Co-authored-by: runway-github[bot] <73448015+runway-github[bot]@users.noreply.github.com>
Co-authored-by: tommasini <[email protected]>
Co-authored-by: Nicholas Smith <[email protected]>
Co-authored-by: sahar-fehri <[email protected]>
Co-authored-by: Prithpal Sooriya <[email protected]>
Co-authored-by: Kylan Hurt <[email protected]>
Co-authored-by: Nico MASSART <[email protected]>
Co-authored-by: Frank von Hoven <[email protected]>
Co-authored-by: Frank von Hoven <[email protected]>
Co-authored-by: Matthew Grainger <[email protected]>
Co-authored-by: Matthew Walsh <[email protected]>
## **Description**

Picks `AssetPollingProvider` diff from
https://github.com/MetaMask/metamask-mobile/pull/12538/files bug fix to
isolate changes.

## **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**

This PR aims to remove redundant e2e tests, specifically those in the
quarantine folder. The two tests that will be removed in this PR is:
- `import-nft.failing.js`:
- We already have test steps to import an NFT:
https://github.com/MetaMask/metamask-mobile/blob/main/e2e/specs/assets/nft-details.spec.js#L49#L52
   - `send-to-contact.failing.js`
        - We have multiple e2e tests that send funds to an address.  

## **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.
…low (#12295)

## **Description**

1. What is the reason for the change?

There was a quick fix for there being a share left in the vault after a
user attempts to unstake all shares. This PR adds the long-term fix and
upgrades the stake-sdk which added a new getShares method on the
contract.

3. What is the improvement/solution?

We are now using the stake-sdk to access the getShares contract method
instead of creating the interface on the fly.

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/STAKE-871

## **Manual testing steps**

1. Attempt to unstake all shares and all of them should unstake, leaving
no option to unstake anymore.
2. There should be no change from before, as we only change the source
we get the contract method from

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**


https://github.com/user-attachments/assets/b9e7af8b-c421-482c-b3e2-d15982681520

<!-- [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**

Bumps all Snaps packages to their latest versions and wires up logic to
use native PBKDF2 for key derivation in Snaps.

This makes key derivation using the BIP-44 and BIP-32 entropy test Snaps
pretty much instant (with the exception of Snap boot), it also improves
the speed of using `snap_manageState`.
## **Description**

* Fix circular dependencies between engine-> network ->
handleNetworkSwitch

## **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: Aslau Mario-Daniel <[email protected]>
## **Description**

PR to fix NFTs disappearing after the user closes the app

## **Related issues**

Fixes: #12523

## **Manual testing steps**

1. Go to to a network that is not (Ethereum/Linea) where you have NFTs
2. Import your NFT
3. Kill app
4. Open app again
5. Go to NFT tab
6. You should see your NFT

## **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/11ef5fe1-5a14-4f10-9e76-b65db4c519be


### **After**

<!-- [screenshots/recordings] -->


https://github.com/user-attachments/assets/64cccd43-3ae7-4c27-989d-f842a68127a4


## **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.
Copy link
Contributor Author

github-actions bot commented Dec 13, 2024

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:

I have read the CLA Document and I hereby sign the CLA

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 27 committers have signed the CLA.
@vinistevam
@MajorLift
@vinnyhoward
@joaoloureirop
@owencraston
@dawnseeker8
@Prithpal-Sooriya
@salimtb
@tommasini
@jake-perkins
@mathieuartu
@sethkfman
@gambinish
@nickewansmith
@sahar-fehri
@amitabh94
@EtherWizard33
@NicolasMassart
@chrisleewilcox
@cryptodev-2s
@Cal-L
@jvbriones
@dan437
@bfullam
@jpuri
@smilingkylan
@SamuelSalas

salimtb and others added 7 commits December 20, 2024 11:51
- chore: bump nanoid package to 3.3.8 (#12725)

## **Description**

Resolution created to bump nanoid to version 3.3.8!

It can be removed once this controllers are bumped:
MetaMask/core#5073

## **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.
[17f138e](17f138e)

Co-authored-by: tommasini <[email protected]>
…ilder (#12818)

- fix: use correct import for MetricsEventBuilder (#12798)

<!--
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?
-->

Fixes correct import for MetricsEventBuilder


## **Related issues**

Fixes: [12530](#12530)

[Related Slack

message](https://consensys.slack.com/archives/C8RSKCNCD/p1734622035414719?thread_ts=1734535680.397999&cid=C8RSKCNCD)

## **Manual testing steps**

1. Go to this [dapp

](https://metamask.github.io/metamask-sdk/chore-update-vuejs-build/packages/examples/react-demo/build/index.html)in
the inapp browser with a debug build
2. Check the console logs for the dapp
3. Switch chains -> See console

## **Screenshots/Recordings**
[Link to zoom

recording](https://consensys.zoom.us/rec/share/AJr-gv8tqRuEZx0PorROKgux41aYESIZ3k_PHRMoYTwh6EHIcZU40oliXHa28bYU.wYfZYWsUupmI5hQo)
<!-- 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.
[3b17cd3](3b17cd3)

Co-authored-by: Frank von Hoven <[email protected]>
#12820)

…ctions (#12664)

Resolves an issue with stuck transactions for some users who used smart
transactions, which was caused by having [this
PR](#12274) in the
7.36.0 release even when it was marked for 7.37.0 by metamaskbot.

Fixes:

1. Cancelled transaction stuck thanks to super low gas settings
2. All other submitted transactions afterwards as well with the
invalid_nonce error.
3. Upgrade to 7.37.1 and see all cancelled tx
4. Try a new tx

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

https://consensys.slack.com/archives/C084S32G337/p1734034013370979

https://consensys.slack.com/archives/C084S32G337/p1734039388196979

- [ ] 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.

- [ ] 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?
-->

## **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 <[email protected]>
- fix: optimize display swap button (#12693)

<!--
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**
Optimize the display of swap button to fix flaky test

<!--
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. Select BNB token to swap
2. Check the swap button display


## **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/13a6b674-d97c-484c-a914-ec43ad2cd713




### **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.
[491dc45](491dc45)

Co-authored-by: Salim TOUBAL <[email protected]>
@sethkfman sethkfman changed the base branch from main to stable January 7, 2025 20:31
sethkfman and others added 17 commits January 7, 2025 16:12
## **Description**

Cherry picks #12859

## **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.
#12928)

## **Description**

Cherry-pick of
d35a2a0
(#12923)

## **Related issues**

Fixes: https://infura.atlassian.net/issues/MDD-117 /
https://consensys.slack.com/archives/C027M10HGEA/p1736428038068929

## **Manual testing steps**

1. Visit this preview in the MM browser:
https://metamask-docs-git-snap-debugging-branch-consensys-ddffed67.vercel.app/developer-tools/faucet/
2. (optional) Press the "Debug Test" button, it should complete
3. Press the "Connect MetaMask" button, it should complete

## **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.
…et multichain (#12930)

- fix: add nativeAsset key to staked ETH asset multichain (#12851)

## **Description**

1. What is the reason for the change?

There was a crash when clicking on the Staked Ethereum asset due to it
missing a key `nativeAsset` which is required in some component. This
was a regression from code refactoring.

Separately, there was a currency switching bug that was introduced with
the use of a different fiat conversion method. I have switched to a
method that does not throw error for currency switching and this has
been tested with Vince

Separately, there were some issues with the Token list asset balances
being slightly off. This was noticed when the balance we use for the
Asset Detail staked Ethereum asset showed up differently than in the
Token List. Some of this has been addressed, but there are still issues
that I've noticed where we lose precision when getting the fiat total of
a token asset or native asset. I left a comment in the code about this,
and maybe it could be revisited it later.

2. What is the improvement/solution?

We added the `nativeAsset` key back to the staked ethereum asset

We added the weiToFiat method to replace the Intl.NumberFormat method 

We removed precision loss from multichain.ts asset fiatBalance
calculations, however there is another place(s) where fiat balances are
recalculated again i.e.

[deriveBalanceFromAssetMarketDetails.ts](https://github.com/MetaMask/metamask-mobile/pull/12851/files#diff-283c109c8093bbb5d8e06be79bcbeac928b8353633e55dc7944594a0e6888b49)

## **Related issues**

Fixes: #12680
Fixes: #12856
Closes: https://consensyssoftware.atlassian.net/browse/STAKE-912

## **Manual testing steps**

- Import the staking test wallet in MM
- Click on the staked ethereum asset
- The link should not crash the application more info here on testing
this #12680
- Currency switching should not crash the application more info here on
testing this #12856

## **Screenshots/Recordings**

### **Before**

### **After**



https://github.com/user-attachments/assets/c2525b70-8d04-4606-861b-3206ebd557f4



https://github.com/user-attachments/assets/a8c4010e-3589-4171-803a-4d07a962e6a6

## **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.
[40a999c](40a999c)

Co-authored-by: Nicholas Smith <[email protected]>
<!--
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 cherry picks
#12958 into
`release/7.38.0`

## **Related issues**

Fixes: #12612

## **Manual testing steps**

N/A

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

N/A

### **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.
… Popular Network (#12982)

- fix: Only aggregate PortfolioBalance if on Popular Network (#12961)

## **Description**

Similar to extension, we only want to show the cross chain aggregated
balance if the selected network is a popular network, and the "Popular
networks" filter is enabled.

If we are on a custom network, we only want to show the aggregated
balance for that chain, similar to how we handle testnets.

## **Related issues**

Fixes: #12922

## **Manual testing steps**

1. Go to app, and add a custom network
2. Ensure the following:
- When a popular network is selected in global network selector and
"Popular networks" filter is enabled, show aggregate balance across
popular networks. When "Current network" filter is enabled, show
aggregated balance for that chain.
- When a non-popular network (aka custom network) is selected in global
network selector, only show aggregated balance for that chain.
3. When testnet is selected in global network selector, show aggregated
balance for the testnet only. For this case, make sure "Show conversion
on test networks" is toggled on.

## **Screenshots/Recordings**

### **Before**

![File

(1)](https://github.com/user-attachments/assets/98e4f75e-eb47-483b-b26e-3f5ada8590bc)

### **After**

<img width="470" alt="Screenshot 2025-01-13 at 10 40 40 AM"

src="https://github.com/user-attachments/assets/9c27b8ae-a663-4d05-b0c1-301994cb528d"
/>



https://github.com/user-attachments/assets/170debc8-0a6f-4f98-a759-b98f375abe34

## **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.
[a4650ba](a4650ba)

Co-authored-by: Nick Gambino <[email protected]>
…opriately per asset… (#13011)

…… (#12987)

1. What is the reason for the change?

There are 2 separate issues that are both related to the StakedBalance
component. One is Asset Detail StakingBalance shows for ETH assets on
unsupported chains with popular networks filter. The other is Asset
Detail StakingBalance does not show for mainnet ETH asset when on
unsupported chain with popular networks filter.

2. What is the improvement/solution?

The user will not see staked ethereum info for assets that are not
mainnet Ethereum asset when on mainnet

The user will see staked ethereum info when on unsupported chain with
popular networks filter and viewing the mainnet Ethereum asset detail.
We show the details but hide any staking actions for the time being
while we re-evaluate how to keep the actions and switch the network on
the fly.

Fixes: https://consensyssoftware.atlassian.net/browse/STAKE-921

**Asset Detail StakingBalance shows for ETH assets on unsupported chains
with popular networks filter**

- Switch to mainnet network

- Switch to popular networks filter

- Select the native asset of a popular network that is not mainnet, such
as Base or Optimism

- In the asset detail page you should not see staked ethereum info

**Asset Detail StakingBalance does not show for mainnet ETH asset when
on unsupported chain with popular networks filter**

Switch to Base network

Switch to popular networks filter

Select the mainnet Ethereum asset

In the asset detail page you should see staked ethereum info and
earnings info but no action buttons or claim link banners

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->


https://github.com/user-attachments/assets/83132195-8bd8-452f-a25f-37a9b1d276d9


https://github.com/user-attachments/assets/6e0bde2f-1dd2-4cd8-ad2c-e78cbe962ff1

- [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.

- [ ] 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**

Cherry pick stake 721

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/STAKE-921

## **Manual testing steps**

**Asset Detail StakingBalance shows for ETH assets on unsupported chains
with popular networks filter**

- Switch to mainnet network

- Switch to popular networks filter

- Select the native asset of a popular network that is not mainnet, such
as Base or Optimism

- In the asset detail page you should not see staked ethereum info

**Asset Detail StakingBalance does not show for mainnet ETH asset when
on unsupported chain with popular networks filter**

Switch to Base network

Switch to popular networks filter

Select the mainnet Ethereum asset

In the asset detail page you should see staked ethereum info and
earnings info but no action buttons or claim link banners
## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **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
- [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.
…networks (#12988) (#13012)

<!--
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.
-->
This PR fixes Earn CTA navigation behavior when clicked on unsupported
networks. Previously, the button was unresponsive or navigated to
Portfolio screen when clicked on networks that don't support staking.
Now, it properly switches to mainnet and navigates to the staking UI.

- Jira ticket:
[STAKE-916](https://consensyssoftware.atlassian.net/browse/STAKE-916)

1. Open the app and navigate to home page and select Portfolio View
2. Change the Network to Linea
3. Click on Earn button next to Ethereum in Portfolio View
4. It should change the network to mainnet and then navigate to staking
UI

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->


https://github.com/user-attachments/assets/8421278f-43c1-48c3-9d4b-1c48d2dc9669


https://github.com/user-attachments/assets/a14f2b86-5701-4c91-b566-ddefa563f4ee

- [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.

- [ ] 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.

[STAKE-916]:

https://consensyssoftware.atlassian.net/browse/STAKE-916?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

<!--
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**

- [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
- [ ] 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.


[STAKE-916]:
https://consensyssoftware.atlassian.net/browse/STAKE-916?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[STAKE-916]:
https://consensyssoftware.atlassian.net/browse/STAKE-916?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
- fix: Fix `send` flow deeplinks (#12965)

<!--
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 fix deeplinks using `Send` flow.

## **Related issues**

Fixes: #12689

## **Manual testing steps**

1. Open safari/chrome in the testing device - navigate
https://metamask.github.io/metamask-deeplinks/
2. Click "Payment Request" then "Eth Payment"
3. Fill the form - you dont need to put chain id
4. Click "Generate url"
5. Click generated url 
6. See that it opens send flow page

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->




https://github.com/user-attachments/assets/ec6324b0-188f-4079-90ee-3d30b7e6056d



### **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.
[249e035](249e035)

Co-authored-by: OGPoyraz <[email protected]>
<!--
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 cherry picks
#12965 into
`release/7.38.0`

## **Related issues**

Fixes: #12689

## **Manual testing steps**

N/A

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

N/A

### **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.
…nse (#13034)

- fix: Fix disappearing security alert response (#13027)

<!--
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 retain `securityAlertResponses` on
`SET_TRANSACTION_OBJECT` action.

## **Related issues**

Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3903

## **Manual testing steps**

1. Open up our [[MetaMask E2E test

dapp](https://metamask.github.io/test-dapp/)](https://metamask.github.io/test-dapp/)
and attempt to prompt a malicious approval for BUSD in our PPOM section.
2. Notice that the malicious warning might popup and stay on screen.

## **Screenshots/Recordings**




https://github.com/user-attachments/assets/60eb5398-c914-4498-8592-4acea5caa163



### **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.
[435c9e6](435c9e6)

Co-authored-by: OGPoyraz <[email protected]>
…sion to 4 (#13035)

- fix: Bump artifact upload and download version to 4 (#12918)

<!--
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?
-->

These changes bumps the github action `upload-artifact` and
`download-artifact` to v4 based on these docs -

https://github.com/actions/upload-artifact?tab=readme-ov-file#v4---whats-new.
Migration info can be found here as well.
https://github.com/actions/upload-artifact/blob/main/docs/MIGRATION.md.
Aside from bumping the version, the main breaking change is ensuring
unique names, which in our case, only applies to the unit test shards
(names are already unique)

## **Related issues**

Fixes:

## **Manual testing steps**

Check that unit test actions in Github CI works

## **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.
[5a38279](5a38279)

Co-authored-by: Cal Leung <[email protected]>
… iOS devices only (#13040)

- chore: Scope PortfolioView feature flag to iOS devices only (#13039)

## **Description**

Scopes the PortfolioView feature flag to only be true for iOS devices,
while we do more troubleshooting on the performance bottleneck on
Android devices.

## **Related issues**

Performance related bug ticket:
#12679

## **Manual testing steps**

1. Run app with feature flag: `PORTFOLIO_VIEW='true' yarn watch:clean`
2. On iOS device, PortfolioView should be enabled
3. On Android device, PortfolioView should not be enabled

## **Screenshots/Recordings**

<img width="474" alt="Screenshot 2025-01-16 at 11 31 49 AM"

src="https://github.com/user-attachments/assets/645d7f95-db1c-4b40-a3a5-aa6f8bf5fcbb"
/>

<img width="484" alt="Screenshot 2025-01-16 at 11 35 57 AM"

src="https://github.com/user-attachments/assets/8bf5d3cf-aed7-419a-9e4d-72829c37e7cf"
/>

## **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.
[7f8d095](7f8d095)

Co-authored-by: Nick Gambino <[email protected]>
<!--
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**
Updated link for running upgrade test from 7.38.0 to 7.39.0.
<!--
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.