fix(settings): prevent refresh cycle from reverting unsaved toggle changes
CI / Build & Test (push) Successful in 2m55s
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:
@@ -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');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user