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: cross chain swap STX #28460

Open
wants to merge 44 commits into
base: cross-chain-swaps-status-ui
Choose a base branch
from

Conversation

infiniteflower
Copy link
Contributor

@infiniteflower infiniteflower commented Nov 14, 2024

Description

This PR improves support for Smart Transactions (STX). It will not show the STX status page if the tx is a Bridge tx. Instead users will be immediately sent to the Activity list. If the user opens the Bridge tx detaills, they should be able to see the proper info.

The main change is that in BridgeStatusController the txHistory is now keyed by txMeta.id rather than txMeta.hash. This is because for an STX we might not have the hash immediately, but we still want to look things up.

We also add a way to call addTransaction from the UI side. Previously we used addTransactionAndWaitForPublish. However for STX, this will cause the app to wait until a txHash is available before returning a txMeta, which means we can't even use the txMeta.id to key a BridgeHistoryItem. If we use addTransaction this will allow us to receive a txMeta object back immediately and use txMeta.id.

Open in GitHub Codespaces

Related issues

Depends on MetaMask/core#4918

Manual testing steps

  1. Go to Settings > Advanced, make sure Smart Transactions is on
  2. Switch network to Ethereum
  3. Go to Bridge
  4. Selection source network, source token, dest network, dest token
  5. Request a quote
  6. Execute a bridge
  7. Go to Activity
  8. Click on the Bridge tx

Screenshots/Recordings

Before

After

Screen.Recording.2024-11-25.at.11.05.55.AM.mov

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.

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.

@infiniteflower infiniteflower force-pushed the mb893-cross-chain-swap-tx-status-2 branch from 3d57b48 to c1adb80 Compare November 14, 2024 16:03
@infiniteflower infiniteflower changed the title Mb1571 cross chain swap stx feat: Mb1571 cross chain swap STX Nov 14, 2024
@infiniteflower infiniteflower changed the title feat: Mb1571 cross chain swap STX feat: cross chain swap STX Nov 14, 2024
@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch 3 times, most recently from c082ed0 to 0825eeb Compare November 14, 2024 21:22
@infiniteflower infiniteflower force-pushed the mb893-cross-chain-swap-tx-status-2 branch from e43b87a to 4ad79f2 Compare November 20, 2024 02:19
@infiniteflower infiniteflower force-pushed the mb893-cross-chain-swap-tx-status-2 branch from 4ad79f2 to 05c5197 Compare November 20, 2024 02:47
@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch 2 times, most recently from 67de92a to 0e21993 Compare November 21, 2024 01:56
github-merge-queue bot pushed a commit that referenced this pull request Nov 21, 2024
## **Description**

This PR implements the following:

1. Submit bridge transaction for normal transactions
3. Submit bridge transaction for native gas tokens that don't require
approval
4. Submit bridge transaction for ERC20s that require approval

Does not fully:
1. Submit bridge transaction for smart transactions
- You can submit an STX, but the status screens don't make the most
sense right now.
- Improved STX support be handled by
#28460 and
MetaMask/core#4918

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

## **Related issues**

- Targeting: #27522

## **Manual testing steps**

1. Go to Bridge
2. Fill in source/dest token and amounts
3. Get a quote
4. Execute Bridge

## **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/b73f917d-e3e4-468b-b0fa-29f41f559488




## **Pre-merge author checklist**

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

## **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.
@infiniteflower infiniteflower force-pushed the mb893-cross-chain-swap-tx-status-2 branch from 088a7b4 to 076a868 Compare November 21, 2024 19:45
@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch 4 times, most recently from cc7daf3 to 86a80a0 Compare November 22, 2024 22:00
@infiniteflower infiniteflower changed the base branch from mb893-cross-chain-swap-tx-status-2 to cross-chain-swaps-status-ui November 26, 2024 20:17
@metamaskbot
Copy link
Collaborator

Builds ready [098d118]
Page Load Metrics (1915 ± 151 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint36130451750560269
domContentLoaded154429601880309148
load155330231915315151
domInteractive217444178
backgroundConnect981372311
firstReactRender1683322211
getState566242010
initialActions01000
loadScripts114220791366213103
setupStore65615157
uiStartup169631982117327157
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -289 Bytes (-0.00%)
  • ui: 37.58 KiB (0.48%)
  • common: 2.85 KiB (0.03%)

@metamaskbot
Copy link
Collaborator

Builds ready [5b2b7fb]
Page Load Metrics (1707 ± 59 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint15481958171111857
domContentLoaded15331908168211153
load15461960170712359
domInteractive24118492612
backgroundConnect1099272411
firstReactRender1675452311
getState56217199
initialActions01000
loadScripts1102143412349747
setupStore65815168
uiStartup17232262193614971
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -289 Bytes (-0.00%)
  • ui: 37.6 KiB (0.48%)
  • common: 2.85 KiB (0.03%)

@metamaskbot
Copy link
Collaborator

Builds ready [1d50d37]
Page Load Metrics (2099 ± 218 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint31029801604773371
domContentLoaded157629322075448215
load158529772099454218
domInteractive23115502713
backgroundConnect770282110
firstReactRender1593312010
getState482111003416
initialActions01000
loadScripts112222751578357171
setupStore642984
uiStartup180433352396497238
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -563 Bytes (-0.01%)
  • ui: 37.75 KiB (0.48%)
  • common: 2.85 KiB (0.03%)

@metamaskbot
Copy link
Collaborator

Builds ready [391eef3]
Page Load Metrics (1943 ± 61 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint17652348194913967
domContentLoaded17502231192312459
load17662261194312861
domInteractive266739126
backgroundConnect105319126
firstReactRender158226189
getState5211095136
initialActions00000
loadScripts13221739148411656
setupStore612821
uiStartup20332528222015976
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -563 Bytes (-0.01%)
  • ui: 37.75 KiB (0.48%)
  • common: 2.85 KiB (0.03%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants