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

fix (cherry-pick): get supportedChains to avoid blocking the confirmation process #28422

Conversation

vinistevam
Copy link
Contributor

@vinistevam vinistevam commented Nov 12, 2024

Description

Cherry-pick of #28313 for release 12.7.0.

Open in GitHub Codespaces

Related issues

Fixes: #28255 #28257

Manual testing steps

  1. Use a proxy to intercept requests
  2. Start a Send flow
  3. Intercept the request to security-alerts.api.cx.metamask.io
  4. See send flow cannot be initiated until we have a response to this request

Screenshots/Recordings

Before

After

supported-chains-.webm
unsupported-chains.webm

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.

…#28313)

<!--
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 addresses the blocking behaviour in the confirmation process
caused by the synchronous `supportedChains` check. Previously, the Send
flow was halted until a response from the
`security-alerts.api.cx.metamask.io` API was received. This created
delays and negatively impacted the user experience, especially when the
API response was slow.

**Key Changes:**
**Asynchronous Chain Validation:** The `supportedChains` check is now
performed asynchronously within the non-awaited
`validateRequestWithPPOM` function. This ensures that the Send flow is
not blocked while waiting for the API response.
**Introduction of CheckingChain Result Type:** A new result type,
`CheckingChain`, is introduced to represent the intermediate state
before a definitive result is obtained. This state is used before the
`loading` status in both middleware and transaction utility functions.

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

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28313?quickstart=1)

Fixes: #28255
#28257

1. Use a proxy to intercept requests
2. Start a Send flow
3. Intercept the request to `security-alerts.api.cx.metamask.io`
4. See send flow cannot be initiated until we have a response to this
request

[supported-chains-.webm](https://github.com/user-attachments/assets/4e9e495a-10f3-4bb1-8d05-8045a735b655)

[unsupported-chains.webm](https://github.com/user-attachments/assets/e5767bc1-2eab-44bd-83c3-777d34c23ff6)

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

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

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

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

- [ ] 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.
@vinistevam vinistevam added the team-confirmations Push issues to confirmations team label Nov 12, 2024
Copy link
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@vinistevam vinistevam marked this pull request as ready for review November 12, 2024 12:39
@vinistevam vinistevam requested review from a team as code owners November 12, 2024 12:39
@metamaskbot
Copy link
Collaborator

Builds ready [3b9d84c]
Page Load Metrics (1893 ± 94 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint32423751747511245
domContentLoaded16392324186818187
load16472375189319594
domInteractive218953199
backgroundConnect7103222110
firstReactRender48118842512
getState44816168
initialActions01000
loadScripts11771739138214972
setupStore1179362512
uiStartup18612580210320398
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 860 Bytes (0.02%)
  • ui: 2.42 KiB (0.03%)
  • common: 776 Bytes (0.01%)

@danjm danjm merged commit f042d84 into Version-v12.7.0 Nov 13, 2024
92 checks passed
@danjm danjm deleted the vs/cherry-pick-gte-supported-chains-unblock-confirmation branch November 13, 2024 14:36
@github-actions github-actions bot locked and limited conversation to collaborators Nov 13, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
team-confirmations Push issues to confirmations team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants