From a9e85a34d3a271c88bb2b093250b33e7565afd55 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Tue, 15 Nov 2022 11:03:11 +0100 Subject: [PATCH] fix: [instance:settings] Revert setting back to its original in case of failure --- webroot/js/settings.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/webroot/js/settings.js b/webroot/js/settings.js index 622f9a0..e91ef81 100644 --- a/webroot/js/settings.js +++ b/webroot/js/settings.js @@ -67,14 +67,21 @@ function saveAndUpdateSetting(statusNode, $input, settingName, settingValue) { settingValue = JSON.stringify(settingValue) } saveSetting(statusNode, settingName, settingValue).then((result) => { - window.settingsFlattened[settingName] = result.data - if ($input.attr('type') == 'checkbox') { - $input.prop('checked', result.data.value == true) - } else { - $input.val(result.data.value) - } + updateSettingValue($input, settingName, result.data) + }).catch((e) => { + updateSettingValue($input, settingName, window.settingsFlattened[settingName]) + }).finally(() => { handleSettingValueChange($input) - }).catch((e) => { }) + }) +} + +function updateSettingValue($input, settingName, settingValue) { + window.settingsFlattened[settingName] = settingValue + if ($input.attr('type') == 'checkbox') { + $input.prop('checked', settingValue.value == true) + } else { + $input.val(settingValue.value) + } } function handleSettingValueChange($input) {