diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2018-11-07 23:45:25 -0500 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2018-11-07 23:45:25 -0500 |
commit | 9fe427ff45778f53214ce110bf94fe43459491d1 (patch) | |
tree | 6e5cb35267234e58677d55141f05e2b8bcb3a43e /data/extensions/https-everywhere@eff.org/background-scripts/update.js | |
parent | 21250de51aae2f76cb33d4083d7c91d378c0055d (diff) |
Updated extensions through running updated data/update-extensions.sh
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/background-scripts/update.js')
-rw-r--r-- | data/extensions/https-everywhere@eff.org/background-scripts/update.js | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/data/extensions/https-everywhere@eff.org/background-scripts/update.js b/data/extensions/https-everywhere@eff.org/background-scripts/update.js index 795f968..7e4eedf 100644 --- a/data/extensions/https-everywhere@eff.org/background-scripts/update.js +++ b/data/extensions/https-everywhere@eff.org/background-scripts/update.js @@ -55,6 +55,7 @@ async function loadUpdateChannelsKeys() { ["verify"] ); combined_update_channels.push(update_channel); + util.log(util.NOTE, update_channel.name + ': Update channel key loaded.'); } catch(err) { util.log(util.WARN, update_channel.name + ': Could not import key. Aborting.'); } @@ -74,6 +75,13 @@ async function timeToNextCheck() { } } +// Check for new rulesets immediately +async function resetTimer() { + await store.local.set_promise('last-checked', false); + destroyTimer(); + await createTimer(); +} + // Check for new rulesets. If found, return the timestamp. If not, return false async function checkForNewRulesets(update_channel) { let timestamp_result = await fetch(update_channel.update_path_prefix + "/latest-rulesets-timestamp"); @@ -173,10 +181,10 @@ async function applyStoredRulesets(rulesets_obj){ const rulesets_gz = window.atob(root[key]); const rulesets_byte_array = pako.inflate(rulesets_gz); - const rulesets = new TextDecoder("utf-8").decode(rulesets_byte_array); - const rulesets_json = JSON.parse(rulesets); + const rulesets_string = new TextDecoder("utf-8").decode(rulesets_byte_array); + const rulesets_json = JSON.parse(rulesets_string); - resolve(rulesets_json); + resolve({json: rulesets_json, scope: update_channel.scope}); } else { resolve(); } @@ -184,12 +192,15 @@ async function applyStoredRulesets(rulesets_obj){ })); } - const rulesets_jsons = await Promise.all(rulesets_promises); - if(rulesets_jsons.join("").length > 0){ - for(let rulesets_json of rulesets_jsons){ - if(typeof(rulesets_json) != 'undefined'){ - rulesets_obj.addFromJson(rulesets_json.rulesets); - } + function isNotUndefined(subject){ + return (typeof subject != 'undefined'); + } + + const channel_results = (await Promise.all(rulesets_promises)).filter(isNotUndefined); + + if(channel_results.length > 0){ + for(let channel_result of channel_results){ + rulesets_obj.addFromJson(channel_result.json.rulesets, channel_result.scope); } } else { rulesets_obj.addFromJson(util.loadExtensionFile('rules/default.rulesets', 'json')); @@ -274,7 +285,9 @@ async function initialize(store_param, cb){ Object.assign(exports, { applyStoredRulesets, initialize, - getRulesetTimestamps + getRulesetTimestamps, + resetTimer, + loadUpdateChannelsKeys }); })(typeof exports == 'undefined' ? require.scopes.update = {} : exports); |