diff options
Diffstat (limited to 'data/extensions/jsr@javascriptrestrictor/options_advanced.js')
-rw-r--r-- | data/extensions/jsr@javascriptrestrictor/options_advanced.js | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/data/extensions/jsr@javascriptrestrictor/options_advanced.js b/data/extensions/jsr@javascriptrestrictor/options_advanced.js index ad36623..cf327d4 100644 --- a/data/extensions/jsr@javascriptrestrictor/options_advanced.js +++ b/data/extensions/jsr@javascriptrestrictor/options_advanced.js @@ -20,27 +20,54 @@ // along with this program. If not, see <https://www.gnu.org/licenses/>. // -function load_config_to_text() { +let original_config = undefined; +document.getElementById("levels-storage-undo").classList.add("hidden"); + +function load_config_to_text(keep_config = false) { browser.storage.sync.get(null).then(function (item) { document.getElementById("levels-storage-text").value = JSON.stringify(item, null, '\t'); + if (keep_config) { + original_config = item; + } }); } window.addEventListener("DOMContentLoaded", function() { - load_config_to_text(); + load_config_to_text(true); }); document.getElementById("levels-storage-load").addEventListener("click", function() { load_config_to_text(); }); -document.getElementById("levels-storage-save").addEventListener("click", function() { +document.getElementById("levels-storage-save").addEventListener("click", async function() { try { - checkAndSaveConfig(JSON.parse(document.getElementById("levels-storage-text").value)); + await checkAndSaveConfig(JSON.parse(document.getElementById("levels-storage-text").value)); } catch (e) { alert("The configuration is not valid."); return; } load_config_to_text(); + document.getElementById("levels-storage-undo").classList.remove("hidden"); +}); + +document.getElementById("levels-storage-reset").addEventListener("click", async function() { + await checkAndSaveConfig({}); + load_config_to_text(); + document.getElementById("levels-storage-undo").classList.remove("hidden"); +}); + +document.getElementById("levels-storage-undo").addEventListener("click", async function() { + if (original_config !== undefined) { + try { + let current_config = await browser.storage.sync.get(null); + await checkAndSaveConfig(original_config); + load_config_to_text(); + original_config = current_config; + } + catch (e) { + alert("An unexpected error during configuration restore. Please check and fix the configuration manually."); + } + } }); |