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 @@