about summary refs log tree commit diff stats
path: root/pages/popup/popup.js
diff options
context:
space:
mode:
authorSimonBrazell <simon@brazell.com.au>2019-10-30 16:48:38 +1100
committerSimonBrazell <simon@brazell.com.au>2019-10-30 16:48:38 +1100
commiteeef7f052bce6915a4227b886d4cb714c9672b05 (patch)
treee3f86ac71045580adf6bc6c860e85bea0af430d7 /pages/popup/popup.js
parentMerge branch 'master' of github.com:SimonBrazell/privacy-redirect (diff)
downloadlibredirect-eeef7f052bce6915a4227b886d4cb714c9672b05.zip
Add instances to popup menu
Diffstat (limited to 'pages/popup/popup.js')
-rw-r--r--pages/popup/popup.js47
1 files changed, 35 insertions, 12 deletions
diff --git a/pages/popup/popup.js b/pages/popup/popup.js
index 2837cdb2..799b5ea3 100644
--- a/pages/popup/popup.js
+++ b/pages/popup/popup.js
@@ -2,27 +2,50 @@
 
 let disableNitter = document.querySelector('#disableNitter');
 let disableInvidious = document.querySelector('#disableInvidious');
+let nitterInstance = document.querySelector('#nitterInstance');
+let invidiousInstance = document.querySelector('#invidiousInstance');
 
 chrome.storage.sync.get(
-  ['disableNitter', 'disableInvidious'],
-  (result) => {
+  ['disableNitter', 'disableInvidious', 'nitterInstance', 'invidiousInstance'],
+  result => {
     disableNitter.checked = !result.disableNitter;
     disableInvidious.checked = !result.disableInvidious;
+    nitterInstance.value = result.nitterInstance || '';
+    invidiousInstance.value = result.invidiousInstance || '';
   }
 );
 
-disableNitter.addEventListener('change', (event) => {
+function debounce(func, wait, immediate) {
+  let timeout;
+  return function () {
+    let context = this, args = arguments;
+    let later = function () {
+      timeout = null;
+      if (!immediate) func.apply(context, args);
+    };
+    let callNow = immediate && !timeout;
+    clearTimeout(timeout);
+    timeout = setTimeout(later, wait);
+    if (callNow) func.apply(context, args);
+  };
+};
+
+let nitterInstanceChange = debounce(() => {
+  chrome.storage.sync.set({ nitterInstance: nitterInstance.value });
+}, 500);
+
+nitterInstance.addEventListener('input', nitterInstanceChange);
+
+let invidiousInstanceChange = debounce(() => {
+  chrome.storage.sync.set({ invidiousInstance: invidiousInstance.value });
+}, 500);
+
+invidiousInstance.addEventListener('input', invidiousInstanceChange);
+
+disableNitter.addEventListener('change', event => {
   chrome.storage.sync.set({ disableNitter: !event.target.checked });
 });
 
-disableInvidious.addEventListener('change', (event) => {
+disableInvidious.addEventListener('change', event => {
   chrome.storage.sync.set({ disableInvidious: !event.target.checked });
 });
-
-document.querySelector('#options').addEventListener('click', () => {
-  if (chrome.runtime.openOptionsPage) {
-    chrome.runtime.openOptionsPage();
-  } else {
-    window.open(chrome.runtime.getURL('../options/options.html'));
-  }
-});
\ No newline at end of file