fix: render the view "Back" lands on after the popup is reopened (closes #268)
All checks were successful
check / check (push) Successful in 44s
All checks were successful
check / check (push) Successful in 44s
goBack() only unhid its target. A reopened popup renders the wallet list and the one view restoreView() lands on, so every other view is still the blank static template from index.html: pressing Back from Settings onto an address showed an empty address line and no balances, and the same held for address-token, receive, confirm-tx and transaction. The per-view dispatch and its data guards move out of restoreView() into src/popup/viewRouter.js, and goBack() now routes a popped view through the same code by way of a renderer index.js registers with setBackRenderer(). A view whose backing state is gone falls back to Home the way the restore does, rather than showing an empty template. The renderer declines any view outside RESTORABLE_VIEWS, so goBack() unhides it as before: the restored stack is filtered against that set, so such a view can only be on the stack from the current page load, where forward navigation rendered it on the way in. Forward navigation is untouched and nothing renders twice. tests/backNavigation.test.js drives the real goBack() over the reproduction and over each of address-token, receive, confirm-tx and transaction, with and without their backing state, and pins that a live-session view is still only unhidden. tests/e2e/run.js adds two cases against the real popup in a real browser — a real close and reopen, then Back onto the address screen and onto Receive — because make check cannot see a blank view. Both were demonstrated failing against the unmodified sources: the address line read "" where it should have read the address.
This commit is contained in:
13
TODO.md
13
TODO.md
@@ -45,6 +45,19 @@ undefined identifiers, which is how
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-08-12: "Back" now renders the screen it lands on instead of only unhiding
|
||||
it. A reopened popup renders the wallet list and the one screen it restores
|
||||
onto, so every screen further down the stack was still the blank template from
|
||||
`index.html`, and Back walked straight onto it — an empty address, no
|
||||
balances, no QR code. The Back path now goes through the same per-view
|
||||
dispatch and data guards as the restore (`src/popup/viewRouter.js`, shared
|
||||
with `restoreView()`), falling back to Home when the state the target would
|
||||
render is gone, and declining any view the popup does not render from
|
||||
persisted state, which can only be on the stack from the current page load and
|
||||
was rendered on the way in. Forward navigation is untouched, so nothing
|
||||
renders twice. Covered by unit tests on the real `goBack()` and by two
|
||||
end-to-end cases against the real popup, both demonstrated failing on the
|
||||
unfixed build ([#268](https://git.eeqj.de/sneak/AutistMask/issues/268)).
|
||||
- 2026-08-12: A containerized Firefox end-to-end harness
|
||||
(`make test-e2e-firefox`) drives the real popup in a real Firefox with the MV2
|
||||
build installed as a temporary add-on. Zero npm dependencies — a WebDriver
|
||||
|
||||
Reference in New Issue
Block a user