summaryrefslogtreecommitdiff
path: root/data/extensions/jsr@javascriptrestrictor/options_advanced.js
diff options
context:
space:
mode:
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.");
+ }
+ }
});