From 8f0be7fb1af2836396858f4753aba3f4c1afddff Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sat, 26 Feb 2022 21:28:30 +0300 Subject: Added export and import settings #58 --- src/pages/options/general/general.html | 18 ++++++++++++------ src/pages/options/general/general.js | 29 +++++++++++++++++++++-------- src/pages/options/youtube/youtube.js | 2 +- 3 files changed, 34 insertions(+), 15 deletions(-) (limited to 'src/pages/options') 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 @@ + + +
- Update Instances + Update Instances -
- - +

Exceptions

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"); diff --git a/src/pages/options/youtube/youtube.js b/src/pages/options/youtube/youtube.js index e2aaf5ae..3fd398e0 100644 --- a/src/pages/options/youtube/youtube.js +++ b/src/pages/options/youtube/youtube.js @@ -77,7 +77,7 @@ themeElement.addEventListener("change", ); let volumeElement = document.getElementById("invidious-volume"); -let volumeValueElement = document.querySelector("#volume-value"); +let volumeValueElement = document.getElementById("volume-value"); volumeElement.addEventListener("input", () => { youtubeHelper.setVolume(volumeElement.value); -- cgit 1.4.1