fix: the confirmation screen's balance read and fee estimate stay on its network
The fee estimate starts once the balance is read, and both it and the balance line took the active network at that moment, so a network switched in Settings while the read was in flight put a mainnet balance under a SepoliaETH label and estimated its fee on Sepolia. show() now builds the node of the network it is drawn for once and passes it to the balance read, the fee estimate and the recipient check, and every native symbol on the screen comes from the chain id it is drawn for. Model: opus-5-5
This commit is contained in:
@@ -1013,8 +1013,10 @@ rendered differently on two screens.
|
||||
|
||||
The native token's label is a network's `nativeCurrency` in
|
||||
`src/shared/networks.js`: `ETH` on mainnet, `SepoliaETH` on Sepolia. The
|
||||
wallet's balances and the Send and confirmation screens, which send on the
|
||||
active network, use the active network's. A transaction's figures use the one of
|
||||
wallet's balances and the Send screen, which sends on the active network, use
|
||||
the active network's. The confirmation screen uses the one of the network it is
|
||||
drawn for, the network active when it was shown, even after the network is
|
||||
switched in Settings while it is open. A transaction's figures use the one of
|
||||
the network its chain id names, whichever network is active: the value and fee
|
||||
on the approval screen, the amount on the wait, success and error screens, the
|
||||
transaction history and the transaction detail screen, and the refusal of a fee
|
||||
@@ -1728,12 +1730,14 @@ view would leave a wallet one click from deletion.
|
||||
failed. The amount check uses the same balances: the ETH balance, and for
|
||||
a token transfer the token balance as well
|
||||
- Network fee: "Estimating..." then two lines, or "Unable to estimate",
|
||||
fetched async once the balance is read. The first line is what the
|
||||
transfer is expected to cost, `gasLimit * gasPrice` (USD in parentheses);
|
||||
the second is the `gasLimit * maxFeePerGas` reserve the node requires,
|
||||
which is what the balance check gates on. The second line is omitted on a
|
||||
network with no type-2 pricing, where the two are the same number, but its
|
||||
space is reserved either way
|
||||
fetched async once the balance is read, from the same RPC endpoint as the
|
||||
balance, even if the network is switched in Settings while the balance is
|
||||
being read. The first line is what the transfer is expected to cost,
|
||||
`gasLimit * gasPrice` (USD in parentheses); the second is the
|
||||
`gasLimit * maxFeePerGas` reserve the node requires, which is what the
|
||||
balance check gates on. The second line is omitted on a network with no
|
||||
type-2 pricing, where the two are the same number, but its space is
|
||||
reserved either way
|
||||
- Warnings: inline warnings from the local checks (scam address, self-send)
|
||||
plus four reserved warning boxes made visible by the async checks —
|
||||
recipient with no transaction history, recipient is a contract, burn
|
||||
|
||||
Reference in New Issue
Block a user