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: add more bridge fields to txMeta for Bridge #4918

Draft
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

infiniteflower
Copy link
Contributor

@infiniteflower infiniteflower commented Nov 12, 2024

Explanation

This PR adds a number of new fields to the TransactionMeta type to facilitate Bridge transactions.

We track overall Bridge status through a new BridgeStatusController in Extension. However, that assumes that transactions have a txHash on the source chain that can be used as a reference. For smart transactions (STX), a txHash is not returned immediately. Therefore, we need to attach some additional data to the txMeta so we can properly display information about the transaction even when there is no txHash.

Even if STX returns a txHash right away, it's gated behind a feature flag, which means it can be disabled at any time so we need to have a backup in place.

References

Related to MetaMask/metamask-extension#27740, MetaMask/metamask-extension#28460

Changelog

@metamask/transaction-controller

  • ADDED: bridgeSteps, destinationChainId to the TransactionMeta type
  • ADDED: In addTransaction(), update the txMeta object through the swaps.meta field when it is a Bridge tx, similar to what happens when it's a Swap tx
  • ADDED: TransactionControllerTransactionNewBridgeApprovalEvent, TransactionControllerTransactionNewBridgeEvent events

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've highlighted breaking changes using the "BREAKING" category above as appropriate
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

@infiniteflower infiniteflower changed the title feat: add sourceChainId and destinatonChainId to txMeta feat: add more bridge fields to txMeta Nov 14, 2024
@infiniteflower infiniteflower changed the title feat: add more bridge fields to txMeta feat: add more bridge fields to txMeta for Bridge Nov 14, 2024
github-merge-queue bot pushed a commit to MetaMask/metamask-extension 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 feat/tx-controller-bridge-source-dest-chain-ids branch from 4adbdd1 to b81c944 Compare November 22, 2024 21:15
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.

1 participant