Skip to content

Conversation

@tuna1207
Copy link
Member

@tuna1207 tuna1207 commented May 20, 2025

Description

Password sync check if seedless flow on

  • app start
  • change password
  • add srp

83401b17-c8af-498c-b245-c9a8924cb3ae

Related issues

Fixes:

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Before

After

Pre-merge author checklist

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.

@tuna1207 tuna1207 marked this pull request as draft May 20, 2025 11:18
@github-actions
Copy link

github-actions bot commented May 20, 2025

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.

44 out of 66 committers have signed the CLA.
@Prithpal-Sooriya
@owencraston
@georgeweiler
@ieow
@sahar-fehri
@vinnyhoward
@montelaidev
@chrisleewilcox
@EtherWizard33
@jiexi
@AxelGes
@smilingkylan
@stanleyyconsensys
@salimtb
@bfullam
@davibroc
@matthewwalsh0
@Cal-L
@smgv
@bergarces
@frankvonhoven
@mathieuartu
@NicolasMassart
@tommasini
@mcmire
@nickewansmith
@Matt561
@vivek-consensys
@Daniel-Cross
@C-Ivan
@adonesky1
@pedronfigueiredo
@abretonc7s
@vinistevam
@FrederikBolding
@ccharly
@joaoloureirop
@christopherferreira9
@sethkfman
@dawnseeker8
@zone-live
@infiniteflower
@MarioAslau
@huggingbot
@cortisiko
@OGPoyraz
@weitingsun
@SteP-n-s
@wachunei
@elribonazo
❌ @NidhiKJha
❌ @cmd-ob
❌ @andrepimenta
❌ @ixf
❌ @Tyschenko
❌ @ffmcgee725
❌ @aganglada
❌ @khanti42
❌ @Mrtenz
❌ @baptiste-marchand
❌ @PatrykLucka
❌ @Andepande
❌ @fabiobozzo
❌ @wenfix
❌ @saraantole
❌ @Julink-eth

@ieow ieow marked this pull request as ready for review May 21, 2025 14:17
@ieow ieow changed the title password sync feature feat: 2.5 password sync feature May 22, 2025
Prithpal-Sooriya and others added 5 commits June 5, 2025 20:53
## **Description**

This is an internal PR of this external Margelo performance PR.
MetaMask#16092

--------

Creating new instances of `Intl` is expensive in Hermes. This PR adds
simple cache for it. It improves rendering performance of `TokenList`
for about 30% because it makes all `TokenListItem` component faster.
This also means that there should be less blank spaces when scrolling
quickly.

It could help also in other places in the app as I replaced all usages
of `new Intl` with this new cached version.

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes:

## **Manual testing steps**

N/A - just make sure app currencies and number formatting looks okay.

## **Screenshots/Recordings**

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

### **Before**

~250ms average for render of `TokenList` (measured on high end device)
<img width="888" alt="Screenshot 2025-06-04 at 21 02 19"
src="https://github.com/user-attachments/assets/3b316dbd-8010-49f4-874b-92e6c1ff68df"
/>

### **After**

~170ms average for render of `TokenList` (30% improvement)
<img width="893" alt="Screenshot 2025-06-04 at 20 59 19"
src="https://github.com/user-attachments/assets/80cd18de-327f-47d9-ad8f-789a9bcaebb0"
/>

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
## **Description**
Given the introduction of Solana accounts in 7.47.0, we must now be
diligent about address comparison. Solana addresses are case sensitive
so we must remove all cases of `.toLowerCase` AND `.toLowerCaseEquals`
when performing address comparison/lookup. Instead I created a new
function called `areAddressesEqual` (code pasted below) which we can use
to handle this case sensitive comparison use case. I maintained the
lowercase comparison for eth addresses since there are many assumptions
about lower case addresses already in the codebase. In places where
comparison was not needed I opted for the `toFormattedAddress` which
handles the account type case for us. Instead of calling
`safeToChecksumAddress` we should call `toFormattedAddress` which
conditionally checksums the address if the account is EVM. Both of these
function definitions are pasted below.

```js
export function areAddressesEqual(address1: string, address2: string) {
  if (!address1 || !address2) {
    return false;
  }

  const isAddress1Eth = isEthAddress(address1);
  const isAddress2Eth = isEthAddress(address2);

  // If one is an ETH address and the other is not, return false
  if (isAddress1Eth !== isAddress2Eth) {
    return false;
  }

  // If both are ETH addresses, do a lowercase comparison
  if (isAddress1Eth && isAddress2Eth) {
    return address1.toLowerCase() === address2.toLowerCase();
  }

  // If both are not ETH addresses, do a raw comparison.
  // This is important for non-EVM addresses since they are case sensitive.
  return address1 === address2;
}


export function toFormattedAddress(address: string) {
  return isEthAddress(address) ? toChecksumAddress(address) : address;
}
```

We want to avoid any potential issues that could occurs from comparing
two unique addresses that are equal when lowercased. This could cause
issues such as ...
- incorrect assets being displayed
- sending to the wrong address
- Incorrect transaction data

#### Note
- There were several changes to some of these files that were auto
format changes from prettier. The only real changes in this PR are
swapping out `.toLowerCase` for `toFormattedAddress(address)` and the
equivalent unit test fixes.

### For reviewers
- Ensure that your owned file changes make sense. If a component is EVM
only then we may not need to perform this change.
- Look for other cases of `.toLowerCase` AND `.toLowerCaseEquals` and
ensure that the ones I left in the code make sense.
    - I left some that were related to ENS, transactions and asset data.

## **Related issues**

Fixes: MetaMask#15404
Resolves: https://consensyssoftware.atlassian.net/browse/MUL-239

## **Manual testing steps**

1. Create a wallet
2. create a sol account
3. import an new SRP
4. create a new Sol account
5. perform a send between your accounts
6. ensure that all the data is correct
7. ensure that all the assets being displayed are as expected
8. ensure that the transaction data being shown on the transaction
details screen is correct for each account.

## **Screenshots/Recordings**

There should be no visible changes with this PR.

### **Before**


https://github.com/user-attachments/assets/0fa9230f-f9de-4524-9fce-f7fd11063043


### **After**


https://github.com/user-attachments/assets/02329abe-c945-4a35-97f2-09401a2a0bdb

#### Tested imported account with multiple tokens and NFTS and its
working as expected

<image
src="https://github.com/user-attachments/assets/6b590409-9917-4d24-8187-f945fbbeb39e"
height="500" width="250" />

<image
src="https://github.com/user-attachments/assets/e1f11be1-f2d7-4aac-b260-5c601e9b6290"
height="500" width="250" />


## **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.
This PR updates the KYC forms to submit data to the deposit provider and
builds an MVP build quote page with an amount that can be changed.

-  adjusts the form keys to match Transak API interfaces
- adds MVP UX with input to build quote page
- passes amount as params to basic info
- passes basic info as params to address form
- submit combined kyc data to transak as a `patchUser` call via deposit
SDK


<!--
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.
…Mask#16110)" (MetaMask#16154)

<!--
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 e2e pipeline is currently broken on main because of
MetaMask#16110. The purpose of
this PR is to revert commit `dc87d4f4fbe8358517a642e77dab2fa0704010c4`
so that we have a stable pipeline once again.


The passing e2e is here:
https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/c832b5b8-9db1-49f6-8a6e-0cbadde3a222

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
To address MetaMask/MetaMask-planning#4229 ,
this pr remove the enable automatic security check option in the
security settings and hide/disable the check prompt on login
This will resultant the minimum version will always been checked.

Another pr will remove all the logics and metrics

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


https://github.com/user-attachments/assets/8be6e7dd-46e9-495b-89cc-a2727a3636e9


### **After**

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


https://github.com/user-attachments/assets/777fc5d3-fd52-4ada-b8f2-b542d8c5819f


## **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: hieu-w <maestrokoder@gmail.com>
Co-authored-by: hieu-w <hieu@tor.us>
Co-authored-by: Chaitanya Potti <chaitanya.potti@gmail.com>
@tuna1207
Copy link
Member Author

tuna1207 commented Jun 6, 2025

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

ieow and others added 16 commits June 6, 2025 11:00
<!--
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**
1.4
Update New SRP onboarding flow as per figma design

https://www.figma.com/design/pViOUcmjwhEzFsdrwknpNc/Onboarding-redesign?node-id=434-55200&t=wmEoQSF9g9lFtkwp-0

This PR is part 4 of 7 for the new SRP ui update

This PR cover

- new srp backup ui verification flow


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


https://github.com/user-attachments/assets/37d04ed0-7534-4800-8cbc-228c9add83a6


## **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: smgv <gpatra1996@gmail.com>
Co-authored-by: Chaitanya Potti <chaitanya.potti@gmail.com>
Co-authored-by: hieu-w <hieu@tor.us>
Co-authored-by: hieu-w <maestrokoder@gmail.com>
Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com>
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
To address issue
MetaMask/MetaMask-planning#4086 , onboarding
wizard is disabled from the wallet home screen.
Another PR will be added to remove all related logic and state

<!--
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?
-->
onboarding wizard tour is disabled 

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to Wallet Home Screen after wallet creation
2.
3.

## **Screenshots/Recordings**

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

### **Before**

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

https://github.com/user-attachments/assets/8be6e7dd-46e9-495b-89cc-a2727a3636e9

### **After**

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

https://github.com/user-attachments/assets/fa98c19b-ab94-41ce-8dc9-7f9aa09b2718


## **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: Chaitanya Potti <chaitanya.potti@gmail.com>
Co-authored-by: hieu-w <maestrokoder@gmail.com>
Co-authored-by: hieu-w <hieu@tor.us>
## **Description**

Cleanup ticket that moves the notifications js spec into ts.

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MMQA-648

## **Manual testing steps**

N/A - this just modifies tests

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
## **Description**

Upgrade assets-controllers to v68

## **Related issues**

Fixes:

## **Manual testing steps**

1. Import account wiht NFTs and switch to Ethereum/linea networks
2. Go to NFTs tab
3. You should see all your NFTs on popular networks
4. Click on current network
5. It should filter correctly
6. Remove any NFT on any network
7. Re-Import NFT
8. Should be removed and imported successfully

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

This PR aims to convert confirmation e2e test files to TS.

## **Related issues**

N/A 

## **Manual testing steps**

N/A 

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

## **Description**

### Problem
The current `AccountRightButton` component shows network badges that
create confusion about dapp permission behavior:
1. **When dapp is connected:** Shows an "Active Network" badge on the
account avatar, suggesting only that network can receive requests
2. **Reality:** Connected dapps can send confirmation requests for any
permitted network, making the network badge misleading

This UX inconsistency could lead users to believe they're limited to
interactions on the displayed network only.

### Solution
Simplified the `AccountRightButton` behavior to remove misleading
network indicators while maintaining core functionality:

**New Behavior:**
- When no dapp is connected (!selectedAddress): Shows Global Selected
Network avatar
- When dapp is connected (selectedAddress exists): Shows account avatar
only (no network badge)

Maintained Functionality:
- **Disconnected state:** Clicking opens network selector
- **Connected state:** Clicking opens permissions view where users can
edit permitted networks
- Network management through permissions remains fully functional

## **Related issues**

Fixes: MetaMask/MetaMask-planning#5091

## **Manual testing steps**

1. Goto the browser tab
2. Goto any dapp and observe that the network avatar is still their and
clickable
3. When you connect/give permissions to the dapp, the account avatar
still shows and works as usual, but the network badge doesn't show
anymore.

## **Screenshots/Recordings**


https://github.com/user-attachments/assets/589d195e-eb6f-4889-977b-c633d75a0480

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

- [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 extracts `getMultichainBlockExplorer` to its own hook to become
reusable.

<!--
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 wallet account action
2. Click on the block explorer link.
3. See that it is working like normal.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR adds the new account details behind a feature flag. 

Changes:
1. Add EditAccountName and ShareAddress components
2. Nav/App has been updated to add the new bottom sheets.
3. `getMultichainBlockExplorer` has been added to
`app/core/Multichain/networks.ts`
4. The new multichain account details is behind a feature flag in
`app/components/UI/EvmAccountSelectorList/EvmAccountSelectorList.tsx`

<!--
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?
5. What is the improvement/solution?
-->

## **Related issues**

Depends on: MetaMask#15722

## **Manual testing steps**

1. Manually enable the remote flag
2. Go to account list
6. Click on the 3 dots menu.
7. See the new account details.
8. Click on the address to see the shareable address component.
9. Click on the name to change name. 

## **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/1752700b-fb99-494b-b066-8c699bf5e18a



### **After**



https://github.com/user-attachments/assets/2ad59f77-89fa-49b1-bb8f-a493f1ed93b6



<!-- [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.
…MetaMask#15943)

<!--
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**
On Android, SelectComponent scrollview does not scroll to the selected
item automatically when the modal opens. This PR is copying the
behaviour on iOS

## **Related issues**

Fixes: MetaMask#15942 

## **Manual testing steps**

1. On Android, go to settings -> general -> currency conversion
2. Open the dropdown 
3. Select a currency that's lower down the list, the modal should close
after selected
4. Re-open the modal 
5. should see the selected currency in view

## **Screenshots/Recordings**

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

### **Before**
![Android
before](https://github.com/user-attachments/assets/b7176291-69fc-41b4-b0a4-78495ce03d29)



### **After**
![Android
after](https://github.com/user-attachments/assets/e9e6ce35-1cdc-4746-990f-ffc4830c41b2)


## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

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

This PR changes the account list item to display network avatars. This
change supports a more network-centric approach to account selection,
which is more valuable in a multichain context. Here is the
[Figma](https://www.figma.com/design/MlBUrNnIXlftX4TSjqiUYg/Core-Components?m=auto&node-id=3172-12532&t=kmK0k3E8p5Y6azvO-1)

### Implementation
- Account List Network Indicators: The account list now shows the active
networks by account using the new `AccountNetworkIndicator` component
- Smart Network Activity Sync: Added a new
`useAccountsWithNetworkActivitySync` hook that centralizes network
activity fetching logic for:
- First load (only once per app session, if basic functionality is
enabled)
  - Transaction completion (confirmed transactions)
  - Manual triggers (e.g., after account creation, import etc)
- Improved Multichain Experience: Integrated network indicators into
both `CaipAccountSelectorList` and `EvmAccountSelectorList` components
to show users which networks have activity for each account

### When the data is refreshed
- On first load
- On transaction confirmed
- On SRP import
- On Private key import

### Key Components Added/Modified
- AccountNetworkIndicator: New component that displays network avatars
for accounts with transaction activity
- useAccountsWithNetworkActivitySync: New hook for managing network
activity data synchronization

## **Related issues**

Feature:
[MetaMask#4057](MetaMask/MetaMask-planning#4057)

## **Manual testing steps**

### On First Load
1. Go to this page wallet home screen
2. Click on account picker at the top
3. Observe that account selector now have network icons sorted by
aggregated network balance

### Import SRP
1. import a address with activity using your SRP
2. Observe that the correct networks are shown

### Import Private Key
1. import a address with activity using your private key
2. Observe that the correct networks are shown

### Send a transaction to a network that hasn't had transaction before
1. Find a fresh address with no activity 
2. Observe that there are no networks avatars in the account list
3. Send a transaction to this new address 
4. Observe the new network avatars

## **Screenshots/Recordings**

### Recording

| Before  | After  | 
|:---:|:---:|

|![before](https://github.com/user-attachments/assets/a95a24df-fb62-4f8d-93d2-278a14d8afee)|![after](https://github.com/user-attachments/assets/a31b9658-7e00-4ec2-8564-0e8ab9c3f79b)|

### Screenshot

| Before  | After  | 
|:---:|:---:|

|![before](https://github.com/user-attachments/assets/1b18c47d-3a26-4356-808f-73b53448e3fb)|![after](https://github.com/user-attachments/assets/b1d53b58-a48f-43aa-951e-86fac6d5dd04)|

### Dapp Permissions

<img
src="https://github.com/user-attachments/assets/92119f84-eb85-4caf-982b-dce83a80f5c6"
width=350 >

### **Before**

NA

### **After**

NA

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->
This PR addresses multiple E2E test failures across the MetaMask mobile
app by fixing selector mismatches, UI flow changes, and
platform-specific compatibility issues. The fixes ensure tests work
reliably across both iOS and Android platforms.
### Root Issues Identified

- Confirmation UI Migration: The app had transitioned to a new
confirmation UI by default, but tests were still using selectors from
the legacy confirmation interface
- Terms of Use Flow Changes: The Terms of Use modal now appears earlier
in the onboarding flow, blocking access to subsequent screens
- Platform-Specific Selector Conflicts: Cross-platform differences in
checkbox and button selectors causing test failures
- Feature Flag Conflicts: Tests needed to force specific UI states for
consistent behavior

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
Mandatory modal are dismisaable after using the BottomSheet Modal.
Mandatory modal for terms of use are not suppose to be able to be
dismissed

This PR fix the mandatory modal to be not dismissable
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
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: MetaMask#16186 

## **Manual testing steps**

1. Go to swap page
2. Generate a quote
3. Verify that clicking Terms & Conditions opens a web view with the
T&Cs content

## **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/cef8e499-a7c0-43bf-8712-d53c336a84cc


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

Recreated version of
MetaMask#16110

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

<!--
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 2 issues, network change event not reflecting and invalid
network being shown on personal_sign, and handleSendTransaction.

Improved the code to better manage getting the current network with
support for the latest Per-DApp Selected changes.
Additionally when personal_sign or other activity like
handleSendTransaction where still using old globalNetworkSelector and
for this case we added a check isPerDappSelectedNetworkEnabled and use
other selectors when true and fallback to old global network selector if
the flag is not yet activated.

Also brought some minimal improvements to the code for better
readability, reduce code duplicity, etc.

<!--
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#15240

## **Manual testing steps**

Please follow the instructions in the related [github
issue](MetaMask#15240)

## **Screenshots/Recordings**

1st Issue, personal sign showing wrong network after changing the
selected network from the Dapp.

| Before       | After  (with multichain flags)       |  
|--------------|--------------|
| <video
src="https://github.com/user-attachments/assets/d02fcf6e-d20f-4439-a18e-7638637f54d7">
|<video alt="as"
src="https://github.com/user-attachments/assets/d6b45d57-5abf-4119-ab5a-bd2dc9e2bc5f">
| Currently failing, switches network but does not show personal_sign
after |

2nd issue, transaction preview shows wrong network selected
| Before       | After  (with multichain flags)       |  
|--------------|--------------|
| Not recorded | <video
src="https://github.com/user-attachments/assets/8b3085d9-b171-4106-a1bd-ddc9d0cc4784">
|


## **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 <metamaskbot@users.noreply.github.com>
Co-authored-by: tommasini <tommasini15@gmail.com>
…le. (MetaMask#16150)

<!--
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 enables the per dapp selected network feature flag. And updates the
related unit tests.

These files have failing tests need to be fix

on main:
modified:
app/components/UI/PermissionsSummary/PermissionsSummary.test.tsx (snaps
updated by Eric)
modified:
app/components/UI/TransactionElement/TransactionDetails/index.test.tsx
(snaps updated by Eric)
modified:
app/components/Views/AccountPermissions/AccountPermissions.test.tsx
(fixed by Eric)
modified:
app/components/Views/confirmations/components/confirm/confirm-component.test.tsx
(fixed by Goktug)
modified:
app/components/Views/confirmations/components/info-root/info-root.test.tsx
(fixed by Goktug)
modified:
app/components/Views/confirmations/components/info/switch-account-type/switch-account-type.test.tsx
(fixed by Goktug)
modified:
app/components/Views/confirmations/legacy/SendFlow/Confirm/index.test.tsx
(fixed by Goktug)

<!--
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: EtherWizard33 <etherwizard22@gmail.com>
Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com>
Co-authored-by: NidhiKJha <menidhikjha@gmail.com>
infiniteflower and others added 29 commits June 25, 2025 15:44
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

This PR fixes a typo and clarifies some iOS E2E testing setup.

## **Related issues**

Fixes:

## **Manual testing steps**

n/a

## **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
- [ ] 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.
…found (MetaMask#16584)

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

Right now in initializeVaultFromBackup() from EngineService,
getVaultFromBackup() always returns an object that will be true, making
keyringState always defined.

This PR addresses this by:
- Fixing the condition to explicitly check for the status of the success
property from the getVaultFromBackup result, instead of relying on
object truthiness
- renamed the variable keyringState to vaultBackupResult which is more
descriptive and accurately reflects what the variable contains

## **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
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

- Adds the "Deposit Button Clicked" track and trace events.
- Moves aggregator analytics files one level higher to the shared Ramp
folder so it can be reused with deposit

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR refactors the `useTokenRates` and `useDepositTokenExchange` to
use `assetId` instead of symbol as identifier of tokens.

## **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**
Ensure that bottom sheet dialog respects the top notch for all devices.
Specifically lower Pixel devices like Pixel 3. The behaviour should
remain the same for all other devices including iOS

## **Related issues**

MetaMask#15491
MetaMask/MetaMask-planning#5128
MetaMask#16338


## **Manual testing steps**
We need to test a fullscreen bottom sheet. Here is one of the example
from deeplink modal

1. In the file app/components/Nav/Main/Index.js. Import import
handleDeepLinkModalDisplay from
'../../../core/DeeplinkManager/Handlers/handleDeepLinkModalDisplay'; and
add this line inside the useEffect in line 130
   handleDeepLinkModalDisplay({
    linkType: 'public',
    pageTitle: 'MetaMask',
    onContinueCallBack: () => alert('continue'),
  });
2. Private deep link modal should pop up when you start the app

## **Screenshots/Recordings**

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

### **Before**
Pixel 3 
<img width="326" alt="Screenshot 2025-06-24 at 5 28 50 PM"
src="https://github.com/user-attachments/assets/c7a654b7-96d8-4285-bce8-b1ff180fd003"
/>

### **After**
Pixel 3
<img width="340" alt="Screenshot 2025-06-24 at 5 01 28 PM"
src="https://github.com/user-attachments/assets/b32212ac-bd49-4d95-80f2-29ab621f77b8"
/>

<!-- [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
- [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.
…o accounts permitted (MetaMask#16377)

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

A helper function used for facilitating chain switching and permissions
related to it incorrectly requires accounts to permitted before setting
the per dapp selected network for that dapp. This seems to be a scenario
that is possible in Snaps specifically making it so that Snaps are
unable to switch their selected network.


The fix is to remove this requirement for accounts as it isn't truly
needed in the first place.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Visit https://metamask.github.io/snaps/test-snaps/latest/
2. Connect to Ethereum Provider Snap
3. Change the Select Chain Dropdown
4. Click Get Chain Id
5. Should match each time 

## **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/48d65c48-c61c-44dd-8dbd-aa97f4ef9958



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

Adds the ability for a user to resend the provider authentication code
if they did not receive one.

- 30 cooldown timer
- support link displayed if user attempts to resend more than 3 times
(support link navigation coming in future PR)

<!--
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. navigate to otp page and click the resend button
2. Confirm you receive another email

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

![resend
otp](https://github.com/user-attachments/assets/ebcbd62f-37fa-42d9-8c9e-c42346603b1f)



<!-- [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: AxelGes <axelges9@gmail.com>
Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com>
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
 Fix account mismatch with identity rollout blocker issue

The reported sentry bug implies that there are accounts permitted to a
dapp that don't exist in the wallet. We have already audited what we
believe to be all possible places an account can be removed from the
wallet and see that there is accompanying code that removes the said
account from all permissions beforehand. We also verified that it does
not seem possible to grant Solana accounts to a dapp in the affected
versions which could have been another culprit. This leads us to believe
that there must be some race condition in rendering. The hope is that
this bug goes away OR bubbles up somewhere else where we may have more
clues to help find the root cause.

<!--
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#16587

## **Manual testing steps**

None. We don't know the actual cause yet.

## **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.
remove unwanted lint changes
- Added OnboardingSheet component for user onboarding options.
- Integrated AccountStatus component to handle existing account scenarios.
- Updated navigation routes to include new onboarding flows.
- Enhanced ChoosePassword component to support OAuth login success handling.
- Updated localization files to include new strings for onboarding and account status.
- Added tests for new components and updated existing tests for integration.

This commit enhances the user experience during onboarding and account management by providing clear options and feedback for existing users.
Co-authored-by: Ganesh Suresh Patra <ganesh.patra@consensys.net>
Co-authored-by: Tuna <tunguyenanh@tunatech.org>
@ieow ieow force-pushed the feat/password-sync-update branch from 4d6c589 to 9ea0829 Compare June 30, 2025 07:34
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.