fix: the address screen shows a token just added at its fetched balance, not 0.0000 (closes #516)
A balance refresh that returns now draws the balances on AddressDetail or AddressToken again when that screen is up, not only the wallet list. Their transaction lists are left alone. Every add path on AddToken and SettingsAddToken tracks a token through trackToken(), which gives the tracked record `balanceNotFetched: true`. While the field is set, the token's line reads `quantity unknown` instead of 0.0000, and Send reads its balance as unknown. refreshBalances() now resolves with the tracked tokens whose balance it read at every address. The popup's refresh deletes the field from those tokens in the stored record and leaves the rest of the stored list as it is. Removing the token removes the field, and each network keeps its own records. Model: opus-5-5
This commit is contained in:
@@ -1490,7 +1490,9 @@ lists, the send-screen token selector, the address total and the remove-address
|
||||
warning (`isBelowOneMillionth()` in `src/shared/amountDisplay.js`). The Send and
|
||||
confirmation screens show it when its token is the one being sent. Tracked
|
||||
tokens with a zero balance are listed as well while "Show tracked tokens with
|
||||
zero balance" is on.
|
||||
zero balance" is on. While that setting is on, a token just added reads
|
||||
`quantity unknown` at an address with no entry for it, until a refresh has read
|
||||
its balance at every address (see AddToken).
|
||||
|
||||
#### Stored state and its version
|
||||
|
||||
@@ -1674,6 +1676,13 @@ network switch (below). That popup then redraws its top screen as a reopened
|
||||
popup would. A screen that a reopened popup cannot render, such as Send, is
|
||||
replaced by Home.
|
||||
|
||||
The popup refreshes balances every ten seconds while it is open
|
||||
(`doRefreshAndRender()` in `src/popup/index.js`). Each refresh that returns
|
||||
draws the wallet list again. When AddressDetail or AddressToken is up, the
|
||||
refresh also draws that screen's USD total and balance lines again, but not its
|
||||
transaction list. A refresh draws no other screen again, DeleteAddress and its
|
||||
balance lines included.
|
||||
|
||||
A network switch leaves every screen on the page showing the previous network.
|
||||
The user makes it in Settings, or approves a site's request and the background
|
||||
saves it. Any other popup open meanwhile takes the switch from the stored
|
||||
@@ -1933,7 +1942,8 @@ view would leave a wallet one click from deletion.
|
||||
- To: address or ENS name input, with an inline validation message
|
||||
- Amount input with current balance display, which reads
|
||||
`Current balance: unknown (SYMBOL)` for a token whose scale is unknown, as
|
||||
ConfirmTx's balance line does (see Unknown token scale)
|
||||
ConfirmTx's balance line does (see Unknown token scale). It reads the same
|
||||
for a token whose balance no refresh has read yet (see AddToken)
|
||||
- "Max" button beside the amount input, always in place. It fills in a
|
||||
token's balance, cut down to the 18 decimal places ConfirmTx accepts for a
|
||||
token that has more, or for ETH the exact balance minus the network fee
|
||||
@@ -2236,7 +2246,15 @@ view would leave a wallet one click from deletion.
|
||||
- "Add" button
|
||||
- **Transitions**:
|
||||
- "Add" (valid contract) → tracks the token, pops the stack, and re-renders
|
||||
**AddressDetail**
|
||||
**AddressDetail**. Until a balance refresh on the token's network has read
|
||||
the token's balance at every address, its line never reads `0.0000`. The
|
||||
line reads `quantity unknown` instead, or is left out while "Show tracked
|
||||
tokens with zero balance" is off. Where Blockscout already listed a
|
||||
holding of the token, the line shows that holding. Until that refresh, the
|
||||
tracked token's record carries `balanceNotFetched`, so the line still
|
||||
reads `quantity unknown` after the popup closes and opens again. A refresh
|
||||
that returns draws AddressDetail's balances again (see Navigation), so the
|
||||
fetched balance shows without the screen being reopened
|
||||
- "Add" with a token already tracked, a scam-listed address, or a failed
|
||||
contract lookup → flash message, no screen change
|
||||
- "Add" with a token that the spoof rule refuses → nothing is tracked; "Not
|
||||
@@ -2548,7 +2566,9 @@ view would leave a wallet one click from deletion.
|
||||
add path
|
||||
- **Transitions**:
|
||||
- Any of the add paths shown, on success → adds the token and shows an
|
||||
"Added SYMBOL" flash message (no screen change)
|
||||
"Added SYMBOL" flash message (no screen change). Until a refresh has read
|
||||
the token's balance at every address, its lines read as after "Add" on
|
||||
AddToken
|
||||
- A duplicate, a scam-listed address, or a failed contract lookup → flash
|
||||
message, no screen change
|
||||
- "Add" by contract address with a token that the spoof rule refuses →
|
||||
|
||||
Reference in New Issue
Block a user