aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages/options/general
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-02-26 21:28:30 +0300
committerManeraKai <manerakai@protonmail.com>2022-02-26 21:28:30 +0300
commit8f0be7fb1af2836396858f4753aba3f4c1afddff (patch)
tree9fce07954e1a24bcf04c1476f127c0338b596f04 /src/pages/options/general
parentBump version (diff)
downloadlibredirect-8f0be7fb1af2836396858f4753aba3f4c1afddff.zip
Added export and import settings #58
Diffstat (limited to 'src/pages/options/general')
-rw-r--r--src/pages/options/general/general.html18
-rw-r--r--src/pages/options/general/general.js29
2 files changed, 33 insertions, 14 deletions
diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html
index 9cb247ef..7335d254 100644
--- a/src/pages/options/general/general.html
+++ b/src/pages/options/general/general.html
@@ -120,17 +120,23 @@
<option value="dark-theme">Dark</option>
</select>
</div>
+
+
+
<div class="buttons buttons-inline">
<a class="button button-inline" id="update-instances">
- <span>Update Instances</span>
+ Update Instances
</a>
- </div>
-
- <!-- <div class="buttons buttons-inline">
+ &nbsp; &nbsp;
+ <label for="import-settings" class="button button-inline">
+ Import Settings
+ <input type="file" class="button button-inline" style="display:none;" id="import-settings">
+ </label>
+ &nbsp; &nbsp;
<a class="button button-inline" id="export-settings">
- <span>Export Settings</span>
+ Export Settings
</a>
- </div> -->
+ </div>
<div class="some-block option-block">
<h4>Exceptions</h4>
diff --git a/src/pages/options/general/general.js b/src/pages/options/general/general.js
index 0a0d41c3..302f44d5 100644
--- a/src/pages/options/general/general.js
+++ b/src/pages/options/general/general.js
@@ -20,21 +20,34 @@ themeElement.addEventListener("change", (event) => {
browser.storage.local.set({ theme: value });
});
-document.querySelector("#update-instances").addEventListener("click", () => {
- document.querySelector("#update-instances").innerHTML = '...';
+document.getElementById("update-instances").addEventListener("click", () => {
+ document.getElementById("update-instances").innerHTML = '...';
if (commonHelper.updateInstances()) {
- document.querySelector("#update-instances").innerHTML = 'Done!';
+ document.getElementById("update-instances").innerHTML = 'Done!';
new Promise(resolve => setTimeout(resolve, 1500)).then( // sleep 1500ms
- () => document.querySelector("#update-instances").innerHTML = 'Update Instances'
+ () => document.getElementById("update-instances").innerHTML = 'Update Instances'
)
}
else
- document.querySelector("#update-instances").innerHTML = 'Failed Miserabely';
+ document.getElementById("update-instances").innerHTML = 'Failed Miserabely';
});
-// document.querySelector("#export-settings").addEventListener("click", () => {
-// browser.storage.local.get(null, result => console.log(result))
-// });
+let exportSettingsElement = document.getElementById("export-settings");
+browser.storage.local.get(null, result => {
+ let resultString = JSON.stringify(result, null, ' ');
+ exportSettingsElement.href = 'data:application/json;base64,' + btoa(resultString);
+ exportSettingsElement.download = 'libredirect-settings.json';
+});
+
+let importSettingsElement = document.getElementById("import-settings");
+importSettingsElement.addEventListener("change",
+ _ => {
+ let file = importSettingsElement.files[0];
+ const reader = new FileReader();
+ reader.readAsText(file);
+ reader.onload = () => browser.storage.local.set({ ...JSON.parse(reader.result) })
+ reader.onerror = error => reject(error);
+ })
let nameCustomInstanceInput = document.getElementById("exceptions-custom-instance");
let instanceTypeElement = document.getElementById("exceptions-custom-instance-type");