- 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 67 -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 2424 -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);