diff options
author | Mark H Weaver <mhw@netris.org> | 2023-09-27 00:53:30 -0400 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2023-09-27 14:34:35 -0400 |
commit | fa5c0b073214191e6996ba0b5bc8e61560ff822c (patch) | |
tree | 38e7133195616f4a4da6c8fe46ab2c77c5a6e9e2 /data/extensions/jsr@javascriptrestrictor/options_advanced.js | |
parent | d167f676a167b1392a4e29f14ddf25613468680b (diff) |
Update the JShelter extension to 0.15.2.
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."); + } + } }); |