diff --git a/sidepanel/sidepanel.js b/sidepanel/sidepanel.js index f242af3..4f47854 100644 --- a/sidepanel/sidepanel.js +++ b/sidepanel/sidepanel.js @@ -528,6 +528,7 @@ let currentAutoRun = { let settingsDirty = false; let settingsSaveInFlight = false; let settingsAutoSaveTimer = null; +let settingsSaveRevision = 0; let cloudflareDomainEditMode = false; let cloudflareTempEmailDomainEditMode = false; let modalChoiceResolver = null; @@ -1864,6 +1865,9 @@ async function clearRegistrationEmail(options = {}) { function markSettingsDirty(isDirty = true) { settingsDirty = isDirty; + if (isDirty) { + settingsSaveRevision += 1; + } updateSaveButtonState(); } @@ -1889,6 +1893,7 @@ async function saveSettings(options = {}) { } const payload = collectSettingsPayload(); + const saveRevision = settingsSaveRevision; settingsSaveInFlight = true; updateSaveButtonState(); @@ -1903,11 +1908,13 @@ async function saveSettings(options = {}) { throw new Error(response.error); } - if (response?.state) { + if (response?.state && saveRevision === settingsSaveRevision) { applySettingsState(response.state); } else { syncLatestState(payload); - markSettingsDirty(false); + if (saveRevision === settingsSaveRevision) { + markSettingsDirty(false); + } updatePanelModeUI(); updateMailProviderUI(); updateButtonStates();