diff --git a/core/constants.js b/core/constants.js index ba954225..3ca13859 100644 --- a/core/constants.js +++ b/core/constants.js @@ -66,7 +66,7 @@ const Setting = { 'DISABLE_PREFETCH': 'disablePrefetch', 'ENFORCE_STAGING': 'enforceStaging', 'SHOW_ICON_BADGE': 'showIconBadge', - 'HIDE_RELEASE_NOTES': 'hideReleaseNotes', + 'UPDATE_NOTIFICATION': 'updateNotification', 'STRIP_METADATA': 'stripMetadata', 'LAST_MAPPING_UPDATE': 'lastMappingUpdate', 'ALLOWLISTED_DOMAINS': 'allowlistedDomains', @@ -94,7 +94,7 @@ const SettingDefaults = { [Setting.DOMAINS_MANIPULATE_DOM]: {}, [Setting.LOGGING]: false, [Setting.ENFORCE_STAGING]: false, - [Setting.HIDE_RELEASE_NOTES]: false, + [Setting.UPDATE_NOTIFICATION]: 0, [Setting.INTERNAL_STATISTICS]: false, [Setting.INTERNAL_STATISTICS_DATA]: {}, [Setting.LAST_MAPPING_UPDATE]: '2020-01-01', diff --git a/core/main.js b/core/main.js index 05212edb..c7a0355d 100644 --- a/core/main.js +++ b/core/main.js @@ -31,7 +31,7 @@ var main = {}; main._initializeSettings = function () { storageManager.checkStorageType(); - storageManager.type.get(SettingDefaults, function (items) { + storageManager.type.get(null, function (items) { if (items === null) { items = SettingDefaults; // Restore setting defaults. } @@ -47,6 +47,13 @@ main._initializeSettings = function () { items.allowlistedDomains = items.whitelistedDomains; } + // Convert value of notifications + if (typeof items.hideReleaseNotes !== 'undefined') { + items.updateNotification = items.hideReleaseNotes ? 0 : 2; + delete items['hideReleaseNotes']; + storageManager.type.remove('hideReleaseNotes'); + } + stateManager.selectedIcon = items.selectedIcon; wrappers.setIcon({ 'path': stateManager.selectedIcon @@ -64,34 +71,27 @@ main._showReleaseNotes = function (details) { [Setting.LAST_MAPPING_UPDATE]: mappings.lastMappingUpdate }, function() { if (details.temporary !== true) { - - storageManager.type.get([Setting.HIDE_RELEASE_NOTES], function (items) { - - if (items.hideReleaseNotes !== true) { - - chrome.tabs.create({ - 'url': chrome.extension.getURL('pages/welcome/welcome.html'), - 'active': false - }); - } + chrome.tabs.create({ + 'url': chrome.extension.getURL('pages/welcome/welcome.html'), + 'active': false }); } }); } else if (details.reason === chrome.runtime.OnInstalledReason.UPDATE) { - storageManager.type.get([Setting.LAST_MAPPING_UPDATE, Setting.HIDE_RELEASE_NOTES], function (items) { + storageManager.type.get([Setting.LAST_MAPPING_UPDATE, Setting.UPDATE_NOTIFICATION], function (items) { let mappingUpdate = items.lastMappingUpdate !== mappings.lastMappingUpdate; - if (mappingUpdate || !items.hideReleaseNotes) { - // Updated mappings.js + // Updated mappings.js + if (mappingUpdate) { storageManager.type.set({ [Setting.LAST_MAPPING_UPDATE]: mappings.lastMappingUpdate - }, function() { - if (!items.hideReleaseNotes) { - chrome.tabs.create({ - 'url': chrome.extension.getURL('pages/updates/updates.html?mappingupdate=' + mappingUpdate), - 'active': false - }); - } + }); + } + + if ( (mappingUpdate && items.updateNotification == 1) || items.updateNotification == 2 ) { + chrome.tabs.create({ + 'url': chrome.extension.getURL('pages/updates/updates.html?mappingupdate=' + mappingUpdate), + 'active': false }); } else { // No mappings.js update diff --git a/core/storage-manager.js b/core/storage-manager.js index acf1bbf3..ce1da9b5 100644 --- a/core/storage-manager.js +++ b/core/storage-manager.js @@ -62,7 +62,7 @@ storageManager.migrateData = function (target) { [Setting.DOMAINS_MANIPULATE_DOM]: data.domainsManipulateDOM, [Setting.LOGGING]: data.logging, [Setting.ENFORCE_STAGING]: data.enforceStaging, - [Setting.HIDE_RELEASE_NOTES]: data.hideReleaseNotes, + [Setting.UPDATE_NOTIFICATION]: data.updateNotification, [Setting.LAST_MAPPING_UPDATE]: data.lastMappingUpdate, [Setting.NEGATE_HTML_FILTER_LIST]: data.negateHtmlFilterList, [Setting.SELECTED_ICON]: data.selectedIcon, @@ -141,6 +141,11 @@ storageManager._validation = function (content) { } delete content['whitelistedDomains']; + if (typeof content.hideReleaseNotes !== 'undefined') { + content.updateNotification = content.hideReleaseNotes ? 0 : 2; + delete content['hideReleaseNotes']; + } + for (const [key, value] of Object.entries(SettingDefaults)) { // If type the same as default settings if (typeof value === typeof content[key]) { diff --git a/pages/options/options.html b/pages/options/options.html index c7dca8b1..c62bab79 100644 --- a/pages/options/options.html +++ b/pages/options/options.html @@ -41,14 +41,16 @@
Show the number of injected resources on the extension icon.
-
- +
+ Notification after an update +
+
+
-
If enabled, you wont receive any information about new features in LocalCDN. This includes information about new uBlock/uMatrix rules.
diff --git a/pages/options/options.js b/pages/options/options.js index 52de23a4..5b04a211 100644 --- a/pages/options/options.js +++ b/pages/options/options.js @@ -77,7 +77,7 @@ options._renderOptionsPanel = function () { elements.blockMissing.checked = options._optionValues.blockMissing; elements.disablePrefetch.checked = options._optionValues.disablePrefetch; elements.stripMetadata.checked = options._optionValues.stripMetadata; - elements.hideReleaseNotes.checked = options._optionValues.hideReleaseNotes; + elements.updateNotification.value = options._optionValues.updateNotification; elements.enableLogging.checked = options._optionValues.enableLogging; elements.allowlistedDomains.value = domainAllowlist; elements.domainsManipulateDOM.value = domainHtmlFilter; @@ -184,7 +184,7 @@ options._registerOptionChangedEventListeners = function (elements) { elements.disablePrefetch.addEventListener('change', options._onOptionChanged); elements.stripMetadata.addEventListener('change', options._onOptionChanged); elements.enableLogging.addEventListener('change', options._onOptionChanged); - elements.hideReleaseNotes.addEventListener('change', options._onOptionChanged); + elements.updateNotification.addEventListener('change', options._onOptionChanged); elements.allowlistedDomains.addEventListener('keyup', options._onOptionChanged); elements.domainsManipulateDOM.addEventListener('keyup', options._onOptionChanged); elements.negateHtmlFilterList.addEventListener('change', options._onOptionChanged); @@ -243,7 +243,7 @@ options._getOptionElements = function () { [Setting.DISABLE_PREFETCH]: options._getOptionElement(Setting.DISABLE_PREFETCH), [Setting.STRIP_METADATA]: options._getOptionElement(Setting.STRIP_METADATA), [Setting.ALLOWLISTED_DOMAINS]: options._getOptionElement(Setting.ALLOWLISTED_DOMAINS), - [Setting.HIDE_RELEASE_NOTES]: options._getOptionElement(Setting.HIDE_RELEASE_NOTES), + [Setting.UPDATE_NOTIFICATION]: options._getOptionElement(Setting.UPDATE_NOTIFICATION), [Setting.LOGGING]: options._getOptionElement(Setting.LOGGING), ['ruleSets']: document.getElementsByName('rule-sets'), ['copyRuleSet']: document.getElementById('button-copy-rule-set'), diff --git a/pages/updates/updates.html b/pages/updates/updates.html index fb2d595e..f6ff47fd 100644 --- a/pages/updates/updates.html +++ b/pages/updates/updates.html @@ -84,6 +84,7 @@
  • Updated: video.js v7.10.1 -> v7.10.2
  • Added: WebRTC Adapter v7.4.0
  • Added: lozad to cdnjs.cloudflare.com (#175)
  • +
  • Improved: Settings for update notification (#176)