fix(settings): prevent refresh cycle from reverting unsaved toggle changes
CI / Build & Test (push) Successful in 2m55s

Track a _settingsDirty flag that is set whenever the user interacts with
a settings toggle or number input. updateSettingsUI() skips the sync while
dirty so the 2-second refresh cycle cannot revert in-progress edits.
The flag is cleared after a successful save or reset.
This commit is contained in:
Raven Scott
2026-03-01 00:54:33 -05:00
parent 4ed688a315
commit b9a4e39e78
2 changed files with 24 additions and 0 deletions
+9
View File
@@ -29,9 +29,17 @@ function setupEvents() {
document.documentElement.setAttribute('data-theme', isLight ? 'light' : 'dark');
localStorage.setItem('holesail-theme', isLight ? 'light' : 'dark');
}
// Mark settings dirty for any toggle inside the settings page so the
// refresh cycle doesn't revert the change before the user hits Save
if (toggle.closest('#page-settings')) _markSettingsDirty();
});
});
// Mark settings dirty when any number input inside the settings page changes
document.querySelectorAll('#page-settings input[type="number"]').forEach(input => {
input.addEventListener('input', _markSettingsDirty);
});
// Save settings
$('btnSaveSettings')?.addEventListener('click', saveSettings);
@@ -42,6 +50,7 @@ function setupEvents() {
{ target: 'holesail-native', action: 'send', payload: { type: 'updateSettings', payload: { ...settings } } },
(response) => {
if (response && response.settings) settings = { ...SETTINGS_DEFAULTS, ...response.settings };
_clearSettingsDirty();
updateSettingsUI();
showToast('Settings reset to defaults', 'success');
}