diff --git a/core/main.js b/core/main.js index f351f407af2204f08200e602bb764461c3fd5808..58283af860d4f79c446bc1a383a28936378457cb 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 40c6405f6a2a106fdc58f655c36382b2a52227e3..f5e1147748636bc85d427400e3fc36e011e02506 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) {