fix: the ETH line reads unknown at an address no refresh has read (closes #736)
An address's ETH balance is now null until a refresh has read it. That covers a new address, a new wallet, addresses a wallet scan finds, and every address after a network switch. Its line reads `quantity unknown`, Home's balance `unknown (ETH)`, and Send `Current balance: unknown (ETH)`. Max says the balance is unknown. Send is no longer refused as zero. The address has no total, and DeleteAddress warns that it may hold a balance. A refresh also deletes `balanceNotFetched` only when it read every address in the stored record. Model: opus-5-5
This commit was merged in pull request #741.
This commit is contained in:
@@ -70,7 +70,7 @@ async function chooseNetwork(page, networkId) {
|
||||
function expectNothingStored(page) {
|
||||
const stored = page.storage.read("autistmask");
|
||||
expect(stored.networkId).toBe("sepolia");
|
||||
expect(stored.wallets[0].addresses[0].balance).toBe("0");
|
||||
expect(stored.wallets[0].addresses[0].balance).toBeNull();
|
||||
expect(stored.wallets[0].addresses[0].tokenBalances).toEqual([]);
|
||||
expect(stored.lastBalanceRefresh).toBe(0);
|
||||
}
|
||||
@@ -86,13 +86,13 @@ test("a refresh that returns after a switch in Settings writes nothing, and the
|
||||
await chooseNetwork(page, "sepolia");
|
||||
await refresh.finish();
|
||||
|
||||
expect(state.wallets[0].addresses[0].balance).toBe("0");
|
||||
expect(state.wallets[0].addresses[0].balance).toBeNull();
|
||||
expect(state.wallets[0].addresses[0].tokenBalances).toEqual([]);
|
||||
expectNothingStored(page);
|
||||
|
||||
await page.click("btn-settings-back");
|
||||
expect(page.visibleViews()).toEqual(["main"]);
|
||||
expect(page.text("total-value")).toBe("0.0000 SepoliaETH");
|
||||
expect(page.text("total-value")).toBe("unknown (SepoliaETH)");
|
||||
|
||||
await page.tick();
|
||||
|
||||
@@ -138,7 +138,7 @@ test("a refresh whose save is reading the stored record when the user switches i
|
||||
await page.settle();
|
||||
|
||||
expect(state.networkId).toBe("sepolia");
|
||||
expect(state.wallets[0].addresses[0].balance).toBe("0");
|
||||
expect(state.wallets[0].addresses[0].balance).toBeNull();
|
||||
expect(state.wallets[0].addresses[0].tokenBalances).toEqual([]);
|
||||
expectNothingStored(page);
|
||||
});
|
||||
@@ -166,11 +166,11 @@ test("a refresh that returns after the background switched the network writes no
|
||||
});
|
||||
|
||||
// The background's refresh saves Ethereum Mainnet's balances while the switch
|
||||
// in Settings waits for the lock. This page last saved a balance of "0" and no
|
||||
// in Settings waits for the lock. This page last saved a balance of null and no
|
||||
// token balances, the values that the switch sets.
|
||||
test("a background refresh saved while a switch in Settings waits for the lock leaves none of its balances stored", async () => {
|
||||
const profile = unversionedValidProfile();
|
||||
profile.wallets[0].addresses[0].balance = "0";
|
||||
profile.wallets[0].addresses[0].balance = null;
|
||||
const page = await bootPopup(profile);
|
||||
expect(page.pageErrors).toEqual([]);
|
||||
const background = require("../src/background/state");
|
||||
|
||||
Reference in New Issue
Block a user