From ad08b0426b95861bd4471140860c1632cfcc37fa Mon Sep 17 00:00:00 2001 From: Thomas Rientjes <synzvato@protonmail.com> Date: Sat, 9 Mar 2019 09:48:02 +0100 Subject: [PATCH] Optimize environment update mechanism --- core/main.js | 6 ++--- core/state-manager.js | 61 +++++++++++++++++++++++++------------------ 2 files changed, 39 insertions(+), 28 deletions(-) diff --git a/core/main.js b/core/main.js index f351f40..58283af 100644 --- a/core/main.js +++ b/core/main.js @@ -41,10 +41,10 @@ main._initializeSettings = function () { items = settingDefaults; // Restore setting defaults. } - if (items.blockMissing === true) { - stateManager.setExtensionEnvironment('staging'); + if (items.blockMissing === true || items.enforceStaging === true) { + stateManager.updateEnvironment('staging'); } else { - stateManager.setExtensionEnvironment('stable'); + stateManager.updateEnvironment('stable'); } if (items.disablePrefetch !== false) { diff --git a/core/state-manager.js b/core/state-manager.js index 40c6405..f5e1147 100644 --- a/core/state-manager.js +++ b/core/state-manager.js @@ -68,25 +68,44 @@ stateManager.registerInjection = function (tabIdentifier, injection) { } }; -stateManager.setExtensionEnvironment = function (environment) { +stateManager.setEnvironment = function (environment) { + + if (environment === 'stable') { + + // Strike a balance between coverage and website stability. + files.active = files.stable; + + } else if (environment === 'staging') { + + // Improve coverage at the expense of website stability. + files.active = Object.assign({}, files.stable, files.staging); + } +}; + +stateManager.updateEnvironment = function (preferredEnvironment) { return new Promise((resolve) => { - chrome.storage.local.get(Setting.ENFORCE_STAGING, function (items) { + if (preferredEnvironment === 'stable') { + + let requiredItems = [Setting.BLOCK_MISSING, Setting.ENFORCE_STAGING]; - if (environment === 'staging' || items.enforceStaging === true) { + chrome.storage.local.get(requiredItems, function (items) { - // Improve coverage at the expense of website stability. - files.active = Object.assign({}, files.stable, files.staging); + if (items.blockMissing === true || items.enforceStaging === true) { + stateManager.setEnvironment('staging'); + } else { + stateManager.setEnvironment('stable'); + } - } else { + resolve(); + }); - // Find a balance between coverage and website stability. - files.active = files.stable; - } + } else if (preferredEnvironment === 'staging') { + stateManager.setEnvironment('staging'); resolve(); - }); + } }); }; @@ -186,27 +205,19 @@ stateManager._handleStorageChanged = function (changes) { if (Setting.BLOCK_MISSING in changes) { if (changes.blockMissing.newValue === true) { - stateManager.setExtensionEnvironment('staging'); + stateManager.updateEnvironment('staging'); } else { - stateManager.setExtensionEnvironment('stable'); + stateManager.updateEnvironment('stable'); } } if (Setting.ENFORCE_STAGING in changes) { - chrome.storage.local.get(Setting.BLOCK_MISSING, function (items) { - - if (changes.enforceStaging.newValue === true) { - stateManager.setExtensionEnvironment('staging'); - } else { - - if (items.blockMissing === true) { - stateManager.setExtensionEnvironment('staging'); - } else { - stateManager.setExtensionEnvironment('stable'); - } - } - }); + if (changes.enforceStaging.newValue === true) { + stateManager.updateEnvironment('staging'); + } else { + stateManager.updateEnvironment('stable'); + } } if (Setting.SHOW_ICON_BADGE in changes) { -- GitLab