fix: a balance refresh that returns after a network switch writes nothing (closes #577)
The popup's doRefreshAndRender() and the background's backgroundRefresh() each note the network a refresh starts on and write its balances only if that network is still the active one when the requests return. Otherwise nothing is written and lastBalanceRefresh stays as the switch left it. The background checks inside updateState(). The popup refreshes a copy of its wallets and copies the results onto `state` from inside its save, under the lock, only if both its own network and the stored record's still match, so a switch the background makes is caught too. saveState() takes an optional function, run there on the stored record before the page's state is compared, that may change `state` or cancel the write. Model: opus-5-5
This commit is contained in:
@@ -2080,8 +2080,11 @@ view would leave a wallet one click from deletion.
|
||||
none, and the tokens tracked on that network, and sends `chainChanged`
|
||||
with the new chain id to every open tab. A token is tracked only on the
|
||||
network it was added on, because a contract address names a token on one
|
||||
network only. Choosing the network already active changes nothing and
|
||||
sends nothing
|
||||
network only. Switching also clears every address's balances. A balance
|
||||
refresh, by the popup or the background, stores what it fetched only if
|
||||
the stored network is still the one it fetched on when it returns, so the
|
||||
previous network's balances never reach the new one. Choosing the network
|
||||
already active changes nothing and sends nothing
|
||||
- Ethereum RPC: endpoint URL input + "Save" button (validated against
|
||||
`eth_chainId` before being saved)
|
||||
- Blockscout API: endpoint URL input + "Save" button (validated against
|
||||
|
||||
Reference in New Issue
Block a user