- commit
- 0eefd4b5066d4a3b65a9e451da379fbaa0b0cdfa
- parent
- 0a8b062a7cc79541a24ba4ee0ae371acf9f42430
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2023-02-25 00:13
add savedRules
Diffstat
| M | src/bg.js | 52 | +++++++++++++++++++++++++++++----------------------- |
1 files changed, 29 insertions, 23 deletions
diff --git a/src/bg.js b/src/bg.js
@@ -4,6 +4,7 @@ var lock = Promise.resolve(); 4 4 5 5 var STORAGE_DEFAULTS = { 6 6 'rules': {}, -1 7 'savedRules': {}, 7 8 'requests': {}, 8 9 'recording': true, 9 10 }; @@ -33,36 +34,41 @@ var storageChange = function(key, fn) { 33 34 }; 34 35 35 36 var setRule = function(context, hostname, type, rule) {36 -1 return storageChange('rules', rules => {37 -1 if (hostname === 'first-party') {38 -1 context = '*';39 -1 }40 -1 if (!rules[context]) {41 -1 rules[context] = {};42 -1 }43 -1 if (!rules[context][hostname]) {44 -1 rules[context][hostname] = {};45 -1 }46 -1 if (rule) {47 -1 rules[context][hostname][type] = rule;48 -1 } else {49 -1 delete rules[context][hostname][type];50 -1 if (Object.keys(rules[context][hostname]).length === 0) {51 -1 delete rules[context][hostname];-1 37 return storageGet('savedRules').then(savedRules => { -1 38 return storageChange('rules', rules => { -1 39 if (hostname === 'first-party') { -1 40 context = '*'; 52 41 }53 -1 if (Object.keys(rules[context]).length === 0) {54 -1 delete rules[context];-1 42 if (!rules[context]) { -1 43 rules[context] = savedRules[context] || {}; 55 44 }56 -1 }57 -1 return rules;-1 45 if (!rules[context][hostname]) { -1 46 rules[context][hostname] = {}; -1 47 } -1 48 if (rule) { -1 49 rules[context][hostname][type] = rule; -1 50 } else { -1 51 delete rules[context][hostname][type]; -1 52 if (Object.keys(rules[context][hostname]).length === 0) { -1 53 delete rules[context][hostname]; -1 54 } -1 55 if (Object.keys(rules[context]).length === 0) { -1 56 delete rules[context]; -1 57 } -1 58 } -1 59 return rules; -1 60 }); 58 61 }); 59 62 }; 60 63 61 64 var getRules = function(context) {62 -1 return storageGet('rules').then(rules => {-1 65 return Promise.all([ -1 66 storageGet('rules'), -1 67 storageGet('savedRules'), -1 68 ]).then(([rules, savedRules]) => { 63 69 var restricted = {};64 -1 restricted['*'] = rules['*'] || {};65 -1 restricted[context] = rules[context] || {};-1 70 restricted['*'] = rules['*'] || savedRules['*'] || {}; -1 71 restricted[context] = rules[context] || savedRules[context] || {}; 66 72 return restricted; 67 73 }); 68 74 };