xiMatrix

filter net requests according to source, destination and type  https://addons.mozilla.org/firefox/addon/ximatrix/
git clone https://git.ce9e.org/xiMatrix.git

commit
6522036397b1dbe091f6e96a8900e60794e189f1
parent
ba4566615cba9ee6a9d69e16072fea3945b44cfc
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2023-12-08 20:03
use async/await in popup

Diffstat

M src/popup.js 78 ++++++++++++++++++++++++++++++-------------------------------

1 files changed, 38 insertions, 40 deletions


diff --git a/src/popup.js b/src/popup.js

@@ -11,8 +11,8 @@ var recording = document.querySelector('[name="recording"]');
   11    11 var commitButton = document.querySelector('[name="commit"]');
   12    12 var resetButton = document.querySelector('[name="reset"]');
   13    13 
   14    -1 var sendMessage = function(type, data) {
   15    -1     return browser.runtime.sendMessage({type: type, data: data});
   -1    14 var sendMessage = async function(type, data) {
   -1    15     return await browser.runtime.sendMessage({type: type, data: data});
   16    16 };
   17    17 
   18    18 var getHostnames = function() {
@@ -77,18 +77,17 @@ var createCheckbox = function(hostname, type) {
   77    77     var c = (hostname === 'first-party') ? '*' : context;
   78    78     input.checked = (rules[c][hostname] || {})[type];
   79    79 
   80    -1     input.onchange = () => {
   81    -1         sendMessage('setRule', {
   -1    80     input.onchange = async () => {
   -1    81         var newRules = await sendMessage('setRule', {
   82    82             context: context,
   83    83             hostname: hostname,
   84    84             type: type,
   85    85             value: input.checked,
   86    -1         }).then(newRules => {
   87    -1             rules = newRules;
   88    -1             commitButton.disabled = !rules.dirty;
   89    -1             resetButton.disabled = !rules.dirty;
   90    -1             updateInherit(type);
   91    86         });
   -1    87         rules = newRules;
   -1    88         commitButton.disabled = !rules.dirty;
   -1    89         resetButton.disabled = !rules.dirty;
   -1    90         updateInherit(type);
   92    91     };
   93    92 
   94    93     return input;
@@ -135,49 +134,48 @@ var createRow = function(hostname) {
  135   134     return tr;
  136   135 };
  137   136 
  138    -1 var loadContext = function() {
  139    -1     return sendMessage('get').then(data => {
  140    -1         context = data.context;
  141    -1         requests = data.requests;
  142    -1         rules = data.rules;
  143    -1         recording.checked = data.recording;
  144    -1         commitButton.disabled = !rules.dirty;
  145    -1         resetButton.disabled = !rules.dirty;
  146    -1 
  147    -1         table.innerHTML = '';
  148    -1         table.append(createHeader());
  149    -1         table.append(createRow('inline'));
  150    -1         table.append(createRow('first-party'));
  151    -1 
  152    -1         for (const hostname of getHostnames()) {
  153    -1             table.append(createRow(hostname));
  154    -1         }
   -1   137 var loadContext = async function() {
   -1   138     var data = await sendMessage('get');
   -1   139     context = data.context;
   -1   140     requests = data.requests;
   -1   141     rules = data.rules;
   -1   142     recording.checked = data.recording;
   -1   143     commitButton.disabled = !rules.dirty;
   -1   144     resetButton.disabled = !rules.dirty;
   -1   145 
   -1   146     table.innerHTML = '';
   -1   147     table.append(createHeader());
   -1   148     table.append(createRow('inline'));
   -1   149     table.append(createRow('first-party'));
   -1   150 
   -1   151     for (const hostname of getHostnames()) {
   -1   152         table.append(createRow(hostname));
   -1   153     }
  155   154 
  156    -1         updateInherit('*');
  157    -1     });
   -1   155     updateInherit('*');
  158   156 };
  159   157 
  160   158 browser.webNavigation.onBeforeNavigate.addListener(window.close);
  161   159 
  162    -1 document.querySelector('[name="settings"]').addEventListener('click', event => {
   -1   160 document.querySelector('[name="settings"]').addEventListener('click', () => {
  163   161     browser.runtime.openOptionsPage();
  164   162 });
  165   163 
  166    -1 document.addEventListener('DOMContentLoaded', () => {
  167    -1     loadContext();
   -1   164 document.addEventListener('DOMContentLoaded', async () => {
   -1   165     await loadContext();
  168   166 });
  169   167 
  170    -1 recording.addEventListener('change', event => {
  171    -1     sendMessage('toggleRecording');
   -1   168 recording.addEventListener('change', async () => {
   -1   169     await sendMessage('toggleRecording');
  172   170 });
  173   171 
  174    -1 commitButton.addEventListener('click', event => {
  175    -1     sendMessage('commit', context).then(() => {
  176    -1         commitButton.disabled = true;
  177    -1         resetButton.disabled = true;
  178    -1     });
   -1   172 commitButton.addEventListener('click', async () => {
   -1   173     await sendMessage('commit', context);
   -1   174     commitButton.disabled = true;
   -1   175     resetButton.disabled = true;
  179   176 });
  180   177 
  181    -1 resetButton.addEventListener('click', event => {
  182    -1     sendMessage('reset', context).then(loadContext);
   -1   178 resetButton.addEventListener('click', async () => {
   -1   179     await sendMessage('reset', context);
   -1   180     await loadContext();
  183   181 });