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
4f35ff721229fa9af7eb5e556ccc5dcdd897138f
parent
11cb06cd18a40aa71b754979ad85e8bc8c8057e2
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2025-10-04 20:28
tweak cache

Diffstat

M src/settings.js 23 +++++++++++------------
M src/storage.js 11 +----------

2 files changed, 12 insertions, 22 deletions


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

@@ -1,12 +1,13 @@
    1    -1 /* global browser */
   -1     1 import * as storage from './storage.js';
    2     2 
    3     3 var form = document.querySelector('form');
    4     4 var textarea1 = document.querySelector('textarea.rules');
    5     5 var textarea2 = document.querySelector('textarea.savedRules');
    6     6 
    7    -1 browser.storage.local.get(['rules', 'savedRules']).then(data => {
    8    -1     var rules = data.rules || {};
    9    -1     var savedRules = data.savedRules || {};
   -1     7 Promise.all([
   -1     8     storage.get('rules'),
   -1     9     storage.get('savedRules'),
   -1    10 ]).then(([rules, savedRules]) => {
   10    11     textarea1.value = JSON.stringify(rules, null, 2);
   11    12     textarea2.value = JSON.stringify(savedRules, null, 2);
   12    13 });
@@ -21,14 +22,12 @@ form.addEventListener('change', event => {
   21    22     }
   22    23 });
   23    24 
   24    -1 form.addEventListener('submit', event => {
   -1    25 form.addEventListener('submit', async event => {
   25    26     event.preventDefault();
   26    -1     var rules = JSON.parse(textarea1.value);
   27    -1     var savedRules = JSON.parse(textarea2.value);
   28    -1     browser.storage.local.set({
   29    -1         'rules': rules,
   30    -1         'savedRules': savedRules,
   31    -1     }).then(() => {
   32    -1         location.reload();
   -1    27     await storage.change('rules', () => {
   -1    28         return JSON.parse(textarea1.value);
   -1    29     });
   -1    30     await storage.change('savedRules', () => {
   -1    31         return JSON.parse(textarea2.value);
   33    32     });
   34    33 });

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

@@ -10,7 +10,6 @@ var STORAGE_AREAS = {
   10    10     'savedRules': browser.storage.local,
   11    11     'requests': browser.storage.session,
   12    12 };
   13    -1 
   14    13 var lock = Promise.resolve();
   15    14 var cache = {};
   16    15 
@@ -30,7 +29,7 @@ var _change = async function(key, fn) {
   30    29     var oldValue = await get(key);
   31    30     var data = {};
   32    31     data[key] = fn(oldValue);
   33    -1     delete cache[key];
   -1    32     cache[key] = data[key];
   34    33     await STORAGE_AREAS[key].set(data);
   35    34 };
   36    35 
@@ -38,11 +37,3 @@ export var change = async function(key, fn) {
   38    37     lock = lock.then(() => _change(key, fn));
   39    38     await lock;
   40    39 };
   41    -1 
   42    -1 var invalidateCache = function(changes) {
   43    -1   for (var key in changes) {
   44    -1     delete cache[key];
   45    -1   }
   46    -1 };
   47    -1 
   48    -1 browser.storage.local.onChanged.addListener(invalidateCache);