|
|
@@ -140,34 +140,23 @@ async function setPasswordState(password) {
|
|
|
async function resetState() {
|
|
|
console.log(LOG_PREFIX, 'Resetting all state');
|
|
|
// Preserve settings and persistent data across resets
|
|
|
- const prev = await chrome.storage.session.get([
|
|
|
- 'seenCodes',
|
|
|
- 'seenInbucketMailIds',
|
|
|
- 'accounts',
|
|
|
- 'tabRegistry',
|
|
|
- 'vpsUrl',
|
|
|
- 'customPassword',
|
|
|
- 'mailProvider',
|
|
|
- 'inbucketHost',
|
|
|
- 'inbucketMailbox',
|
|
|
- ]);
|
|
|
+ const prev = await chrome.storage.session.get(PERSISTENT_KEYS.concat(['tabRegistry']));
|
|
|
|
|
|
// Also check chrome.storage.local in case session was empty (after reload)
|
|
|
const local = await chrome.storage.local.get(PERSISTENT_KEYS);
|
|
|
|
|
|
await chrome.storage.session.clear();
|
|
|
- await chrome.storage.session.set({
|
|
|
- ...DEFAULT_STATE,
|
|
|
- seenCodes: prev.seenCodes || local.seenCodes || [],
|
|
|
- seenInbucketMailIds: prev.seenInbucketMailIds || local.seenInbucketMailIds || [],
|
|
|
- accounts: prev.accounts || local.accounts || [],
|
|
|
- tabRegistry: prev.tabRegistry || {},
|
|
|
- vpsUrl: prev.vpsUrl || local.vpsUrl || '',
|
|
|
- customPassword: prev.customPassword || local.customPassword || '',
|
|
|
- mailProvider: prev.mailProvider || local.mailProvider || '163',
|
|
|
- inbucketHost: prev.inbucketHost || local.inbucketHost || '',
|
|
|
- inbucketMailbox: prev.inbucketMailbox || local.inbucketMailbox || '',
|
|
|
- });
|
|
|
+
|
|
|
+ // Restore all persistent keys (prefer session value, fallback to local)
|
|
|
+ const restored = { ...DEFAULT_STATE, tabRegistry: prev.tabRegistry || {} };
|
|
|
+ for (const key of PERSISTENT_KEYS) {
|
|
|
+ if (prev[key] !== undefined && prev[key] !== null && prev[key] !== '') {
|
|
|
+ restored[key] = prev[key];
|
|
|
+ } else if (local[key] !== undefined && local[key] !== null && local[key] !== '') {
|
|
|
+ restored[key] = local[key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ await chrome.storage.session.set(restored);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -946,17 +935,8 @@ async function autoRunLoop(totalRuns) {
|
|
|
|
|
|
// Reset everything at the start of each run (keep VPS/mail settings)
|
|
|
const prevState = await getState();
|
|
|
- const keepSettings = {
|
|
|
- vpsUrl: prevState.vpsUrl,
|
|
|
- mailProvider: prevState.mailProvider,
|
|
|
- tempApiUrl: prevState.tempApiUrl,
|
|
|
- inbucketHost: prevState.inbucketHost,
|
|
|
- inbucketMailbox: prevState.inbucketMailbox,
|
|
|
- duckToken: prevState.duckToken,
|
|
|
- autoRunning: true,
|
|
|
- };
|
|
|
await resetState();
|
|
|
- await setState(keepSettings);
|
|
|
+ await setState({ autoRunning: true });
|
|
|
// Tell side panel to reset all UI
|
|
|
chrome.runtime.sendMessage({ type: 'AUTO_RUN_RESET' }).catch(() => {});
|
|
|
await sleepWithStop(500);
|