fix: Back from Settings never lands on Settings itself (closes #481)
The recovery phrase and delete wallet screens take themselves off the Back stack when left, so Settings, one of those screens, then the settings gear leaves Settings under the Settings now showing. A reopened popup restores the same stack, cut at the screen the gear left. Back then showed Settings again and seemed to do nothing. goBack() now skips any entry for the screen already showing before it pops its target. Jest tests drive the gear and then Back for the recovery phrase screen, once and twice over, for both delete screens, and after a reopen. Model: opus-5-5
This commit was merged in pull request #486.
This commit is contained in:
@@ -52,6 +52,7 @@ const {
|
||||
resetRenderedViews,
|
||||
} = require("../src/popup/viewRouter");
|
||||
const { state } = require("../src/shared/state");
|
||||
const { restorableStack } = require("../src/shared/persistedState");
|
||||
|
||||
const ADDRESS = "0x1111111111111111111111111111111111111111";
|
||||
const TOKEN = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";
|
||||
@@ -209,6 +210,23 @@ describe("Back onto a view the reopened popup never rendered", () => {
|
||||
});
|
||||
});
|
||||
|
||||
// https://git.eeqj.de/sneak/AutistMask/issues/481. Settings, the recovery
|
||||
// phrase or delete wallet screen, the gear, then a reopen: the restored stack
|
||||
// is cut at the screen the gear left, which leaves Settings under the Settings
|
||||
// the popup reopens onto.
|
||||
describe("Back from Settings reopened over its own entry", () => {
|
||||
test.each(["show-phrase", "delete-wallet-confirm"])(
|
||||
"goes to the screen under it after leaving %s",
|
||||
(left) => {
|
||||
const stored = ["main", "settings", left];
|
||||
reopenedOn("settings", restorableStack(stored, "settings"));
|
||||
goBack();
|
||||
expect(calls).toEqual(["main"]);
|
||||
expect(state.currentView).toBe("main");
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
// The guards are restoreView()'s, so a popped view whose backing data is
|
||||
// gone lands on Home rather than on an empty template.
|
||||
describe("Back onto a view whose backing data is gone", () => {
|
||||
|
||||
Reference in New Issue
Block a user