From 3fcae3c54d4311bcfe408bf6acf028288c0faad5 Mon Sep 17 00:00:00 2001 From: nobody Date: Sun, 6 Sep 2020 11:19:35 +0200 Subject: [PATCH] Fixed: Migrate extension settings (#92) --- core/main.js | 35 ++++++++++++++++++++++++++- core/storage-manager.js | 52 +++++++++++++++++++++------------------- pages/options/options.js | 5 ++++ 3 files changed, 67 insertions(+), 25 deletions(-) diff --git a/core/main.js b/core/main.js index c68fd7f8..98d0f050 100644 --- a/core/main.js +++ b/core/main.js @@ -79,8 +79,40 @@ main._showReleaseNotes = function (details) { }); } else if (details.reason === chrome.runtime.OnInstalledReason.UPDATE) { + // ******************************************************************************** // TODO: Remove me in v2.4.1 - storageManager.migrateData('local'); + let data = ''; + + chrome.storage.sync.get(null, function (items) { + data = items; + + data['xhrTestDomain'] = 'localcdn.org'; + data['storageType'] = 'local'; + data['lastMappingUpdate'] = lastMappingUpdate; + + chrome.storage.local.set({ + [Setting.ALLOWED_DOMAINS_GOOGLE_FONTS]: data.allowedDomainsGoogleFonts, + [Setting.AMOUNT_INJECTED]: data.amountInjected, + [Setting.BLOCK_GOOGLE_FONTS]: data.blockGoogleFonts, + [Setting.BLOCK_MISSING]: data.blockMissing, + [Setting.DISABLE_PREFETCH]: data.disablePrefetch, + [Setting.DOMAINS_MANIPULATE_DOM]: data.domainsManipulateDOM, + [Setting.LOGGING]: data.logging, + [Setting.ENFORCE_STAGING]: data.enforceStaging, + [Setting.HIDE_RELEASE_NOTES]: data.hideReleaseNotes, + [Setting.INTERNAL_STATISTICS]: data.internalStatistics, + [Setting.INTERNAL_STATISTICS_DATA]: data.internalStatisticsData, + [Setting.LAST_MAPPING_UPDATE]: data.lastMappingUpdate, + [Setting.NEGATE_HTML_FILTER_LIST]: data.negateHtmlFilterList, + [Setting.SELECTED_ICON]: data.selectedIcon, + [Setting.SHOW_ICON_BADGE]: data.showIconBadge, + [Setting.STORAGE_TYPE]: data.storageType, + [Setting.STRIP_METADATA]: data.stripMetadata, + [Setting.WHITELISTED_DOMAINS]: data.whitelistedDomains, + [Setting.XHR_TEST_DOMAIN]: data.xhrTestDomain + }); + }); + // ******************************************************************************** // If add-on update true, check last update of mappings.js storageManager.type.get([Setting.LAST_MAPPING_UPDATE, Setting.HIDE_RELEASE_NOTES], function (items) { @@ -92,6 +124,7 @@ main._showReleaseNotes = function (details) { storageManager.type.set({ [Setting.LAST_MAPPING_UPDATE]: lastMappingUpdate }, function() { + // ******************************************************************************** // TODO: Remove me in v2.4.1 // if (!items.hideReleaseNotes) { if (true) { diff --git a/core/storage-manager.js b/core/storage-manager.js index be5d2ba6..9656de0f 100644 --- a/core/storage-manager.js +++ b/core/storage-manager.js @@ -35,38 +35,42 @@ storageManager.checkStorageType = function () { }; storageManager.migrateData = function (target) { - let storageSource, storageDestination, newItems, onlyLocal; - - newItems = {}; - onlyLocal = {}; + let storageSource, storageDestination; if (target === 'local') { storageSource = chrome.storage.sync; storageDestination = chrome.storage.local; - } else { + } else if (target === 'sync') { storageSource = chrome.storage.local; storageDestination = chrome.storage.sync; + } else { + return; } - storageSource.get(null, function (items) { - for (const [key, value] of Object.entries(items)) { - // Filter unused old data - if (Object.values(Setting).includes(key)) { - // Remove previous default values - if (key === 'xhrTestDomain' && value === 'decentraleyes.org') { - newItems[key] = 'localcdn.org'; - } else if (key === 'amountInjected' || key === 'internalStatistics' || key === 'internalStatisticsData') { - onlyLocal[key] = value; - } else { - newItems[key] = value; - } - } - } - chrome.storage.local.set(onlyLocal); - storageDestination.set(newItems); - - // Clear sync storage - // chrome.storage.sync.clear(); + storageSource.get(null, function (data) { + chrome.storage.local.set({ + [Setting.AMOUNT_INJECTED]: data.amountInjected, + [Setting.INTERNAL_STATISTICS]: data.internalStatistics, + [Setting.INTERNAL_STATISTICS_DATA]: data.internalStatisticsData, + [Setting.STORAGE_TYPE]: target + }); + storageDestination.set({ + [Setting.ALLOWED_DOMAINS_GOOGLE_FONTS]: data.allowedDomainsGoogleFonts, + [Setting.BLOCK_GOOGLE_FONTS]: data.blockGoogleFonts, + [Setting.BLOCK_MISSING]: data.blockMissing, + [Setting.DISABLE_PREFETCH]: data.disablePrefetch, + [Setting.DOMAINS_MANIPULATE_DOM]: data.domainsManipulateDOM, + [Setting.LOGGING]: data.logging, + [Setting.ENFORCE_STAGING]: data.enforceStaging, + [Setting.HIDE_RELEASE_NOTES]: data.hideReleaseNotes, + [Setting.LAST_MAPPING_UPDATE]: data.lastMappingUpdate, + [Setting.NEGATE_HTML_FILTER_LIST]: data.negateHtmlFilterList, + [Setting.SELECTED_ICON]: data.selectedIcon, + [Setting.SHOW_ICON_BADGE]: data.showIconBadge, + [Setting.STRIP_METADATA]: data.stripMetadata, + [Setting.WHITELISTED_DOMAINS]: data.whitelistedDomains, + [Setting.XHR_TEST_DOMAIN]: data.xhrTestDomain + }); }); }; diff --git a/pages/options/options.js b/pages/options/options.js index 95106625..7466158a 100644 --- a/pages/options/options.js +++ b/pages/options/options.js @@ -402,6 +402,11 @@ options._onStorageOptionChanged = function ({ target }) { chrome.storage.local.set({ [Setting.STORAGE_TYPE]: target.value, }); + if (target.value === 'local') { + storageManager.migrateData('local'); + } else { + storageManager.migrateData('sync'); + } }; options._onLinkClick = function (url) {