summaryrefslogtreecommitdiff
path: root/data/extensions/jsr@javascriptrestrictor/options_advanced.js
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2023-09-27 00:53:30 -0400
committerMark H Weaver <mhw@netris.org>2023-09-27 14:34:35 -0400
commitfa5c0b073214191e6996ba0b5bc8e61560ff822c (patch)
tree38e7133195616f4a4da6c8fe46ab2c77c5a6e9e2 /data/extensions/jsr@javascriptrestrictor/options_advanced.js
parentd167f676a167b1392a4e29f14ddf25613468680b (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.js35
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.");
+ }
+ }
});