MetaMask / MetaMask/metamask-extension
Add "Confirm All" button
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 13.2k
- Forks
- 5.6k
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 451
Description
I have a dapp in which a user can update any of several fields of data stored in a smart contract.
At present, updating multiple fields (in many cases) means multiple transactions will be triggered. Due to particulars in the dapp, the first one is sent and mined before the others, often with some time for UI in between. The first one is submitted as a normal one-off transaction, but after that there might be a dozen stacked up. The top of the MetaMask interface show "1 of 12," "2 of 12," etc. with arrows allowing the user to flip between transactions pending their approval. There is a red Reject All button at the bottom. The transactions are in [reverse order](https://github.com/MetaMask/metamask-extension/issues/3425) ([reportedly](https://github.com/MetaMask/metamask-extension/issues/3425#issuecomment-376317809) going to be flipped in a fix <2 days from now).
With the limited amount of information presented, it's very hard for any user to figure out exactly which transaction does what, and they're going to want to Submit All regardless of order; requiring separate clicks on each of a dozen separate transactions is not a good UX. Consolidating into fewer transactions (base case 1) raises costs, which is not good UX either.
This Issue requests the addition of a green Submit All button, following statistics for the **set** of transactions that would be submitted by clicking that button (e.g. total max amount/transaction fee in ETH and USD). This would be in the blank space below the Reset/Submit/Reject buttons. The Reject All button could be placed next to Submit All.
I might also recommend some grouping by source/target address, so that only those transactions going from & to the same address pair are grouped together. In conjunction with displaying the totals, this would satisfy the UX issue in my motivating use case, while making it harder for some malicious script to hide a bad transaction in the larger set. For the easiest starting point from a UX design perspective, the "Submit All" button + statistics could appear only if there are multiple transactions awaiting user approval which ALL have the same to and from address.
When these additional elements are displayed, we may also want a checkbox next to the editable Gas Price field to apply edits to all the pending transactions, not just the first/last. However, the estimated gas limit should be allowed to remain its estimated value, different for each transaction.
I'm using Chrome on Windows 10, but this Issue filing is not meant to be browser/OS specific.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source files or tests are named. Start by reviewing the pending-transaction approval interface described in the issue, including the existing Submit and Reject controls. Done would require an agreed scope for Submit All, transaction-set statistics, ordering, and any shared gas-price editing behavior, followed by appropriate UI validation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- blockchain, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100