aboutsummaryrefslogtreecommitdiffstats
path: root/src/app.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/app.js')
-rw-r--r--src/app.js12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/app.js b/src/app.js
index 3a9a8d2..0e36cba 100644
--- a/src/app.js
+++ b/src/app.js
@@ -2497,6 +2497,10 @@ function accountSettingsScreen() {
// Wipe every wallet from this device: session accounts, the encrypted vault,
// and saved watch-only accounts. Unbacked-up seeds are unrecoverable after this.
function clearAll() {
+ // Forget means forget: cached balances, history and feature state go with
+ // the seeds (best effort — a still-locked vault's mnemonic-keyed caches
+ // can't be found without its password; the xpub-keyed ones still match).
+ for (const a of [...accounts, ...loadWatchAccounts()]) wipeAccountCache(a);
try { localStorage.removeItem(VAULT_KEY); } catch {}
try { localStorage.removeItem(WATCH_KEY); } catch {}
ui.confirmClear = false;
@@ -4167,6 +4171,14 @@ const ctx = {
// start page (Get started / sign in). Saved wallets stay one Unlock away.
if (!ui.pw) { ui.screen = 'unlock'; ui.unlockTab = 'create'; ui.onb = { step: 'welcome' }; render(); }
},
+ // The drastic exit: leave AND remove everything saved on this device.
+ // Routes through the Delete-all warning — never a single tap.
+ logoutForget: () => {
+ ui.profilePk = null; ui.profEdit = null; ui.profEditFilled = false; ui.chatOpen = false;
+ ui.screen = 'accounts';
+ ui.confirmClear = true;
+ render();
+ },
// the identity the header avatar currently wears (login > seed key >
// remembered) — profile "mine"-ness must match what the user clicked
shownPubkey: () => (featureHook('nostrLoginIdentity') || {}).pubkey