StorageHandler implemented (#92)

This commit is contained in:
nobody 2020-08-30 18:56:36 +02:00
parent e1c779155d
commit 389a840967
No known key found for this signature in database
GPG Key ID: 8F6DE3D614FCFD7A
11 changed files with 52 additions and 34 deletions

View File

@ -139,7 +139,7 @@ interceptor.relatedSettings.push(Setting.XHR_TEST_DOMAIN);
interceptor.relatedSettings.push(Setting.BLOCK_MISSING);
interceptor.relatedSettings.push(Setting.ALLOWED_DOMAINS_GOOGLE_FONTS);
chrome.storage.sync.get(interceptor.relatedSettings, function (items) {
storageManager.type.get(interceptor.relatedSettings, function (items) {
interceptor.amountInjected = items.amountInjected || 0;
interceptor.xhrTestDomain = items.xhrTestDomain || Address.LOCALCDN;
interceptor.blockMissing = items.blockMissing || false;

View File

@ -30,7 +30,9 @@ var main = {};
main._initializeSettings = function () {
chrome.storage.sync.get(settingDefaults, function (items) {
storageManager.checkStorageType();
storageManager.type.get(SettingDefaults, function (items) {
if (items === null) {
items = SettingDefaults; // Restore setting defaults.
@ -47,21 +49,23 @@ main._initializeSettings = function () {
'path': stateManager.selectedIcon
}, 'Enabled');
chrome.storage.sync.set(items);
storageManager.type.set(items);
});
};
main._showReleaseNotes = function (details) {
storageManager.checkStorageType();
if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
chrome.storage.sync.set({
storageManager.type.set({
[Setting.LAST_MAPPING_UPDATE]: lastMappingUpdate
}, function() {
if (details.temporary !== true) {
chrome.storage.sync.get([Setting.HIDE_RELEASE_NOTES], function (items) {
storageManager.type.get([Setting.HIDE_RELEASE_NOTES], function (items) {
if (items.hideReleaseNotes !== true) {
@ -75,17 +79,22 @@ main._showReleaseNotes = function (details) {
});
} else if (details.reason === chrome.runtime.OnInstalledReason.UPDATE) {
// TODO: Remove me in v2.4.1
storageManager.migrateData('local');
// If add-on update true, check last update of mappings.js
chrome.storage.sync.get([Setting.LAST_MAPPING_UPDATE, Setting.HIDE_RELEASE_NOTES], function (items) {
storageManager.type.get([Setting.LAST_MAPPING_UPDATE, Setting.HIDE_RELEASE_NOTES], function (items) {
let mappingUpdate = items.lastMappingUpdate !== lastMappingUpdate;
if (mappingUpdate || !items.hideReleaseNotes) {
// Updated mappings.js
chrome.storage.sync.set({
storageManager.type.set({
[Setting.LAST_MAPPING_UPDATE]: lastMappingUpdate
}, function() {
if (!items.hideReleaseNotes) {
// TODO: Remove me in v2.4.1
// if (!items.hideReleaseNotes) {
if (true) {
chrome.tabs.create({
'url': chrome.extension.getURL('pages/updates/updates.html?mappingupdate=' + mappingUpdate),
'active': false

View File

@ -112,7 +112,7 @@ requestAnalyzer._matchBasePath = function (hostMappings, channelPath) {
requestAnalyzer._findLocalTarget = function (resourceMappings, basePath, channelHost, channelPath, destinationSearchString) {
let resourcePath, versionNumber, resourcePattern, filename, shorthandResource;
chrome.storage.sync.get(Setting.LOGGING, function (items) {
storageManager.type.get(Setting.LOGGING, function (items) {
requestAnalyzer.logging = items.enableLogging;
});
@ -171,17 +171,17 @@ requestAnalyzer._findLocalTarget = function (resourceMappings, basePath, channel
};
requestAnalyzer._applyWhitelistedDomains = function () {
chrome.storage.sync.get(Setting.WHITELISTED_DOMAINS, function (items) {
storageManager.type.get(Setting.WHITELISTED_DOMAINS, function (items) {
requestAnalyzer.whitelistedDomains = items.whitelistedDomains || {};
});
};
requestAnalyzer._applyManipulateDOMDomains = function () {
chrome.storage.sync.get(Setting.DOMAINS_MANIPULATE_DOM, function (items) {
storageManager.type.get(Setting.DOMAINS_MANIPULATE_DOM, function (items) {
requestAnalyzer.domainsManipulateDOM = items.domainsManipulateDOM || {};
});
};
requestAnalyzer._applyAllowedDomainsGoogleFonts = function () {
chrome.storage.sync.get(Setting.ALLOWED_DOMAINS_GOOGLE_FONTS, function (items) {
storageManager.type.get(Setting.ALLOWED_DOMAINS_GOOGLE_FONTS, function (items) {
requestAnalyzer.domainsGoogleFonts = items.allowedDomainsGoogleFonts || {};
});
};

View File

@ -65,7 +65,7 @@ requestSanitizer._stripMetadata = function (requestDetails) {
* Initializations
*/
chrome.storage.sync.get({[Setting.STRIP_METADATA]: true}, function (items) {
storageManager.type.get({[Setting.STRIP_METADATA]: true}, function (items) {
if (items === null || items.stripMetadata !== false) {
requestSanitizer.enable();

View File

@ -56,18 +56,18 @@ stateManager.registerInjection = function (tabIdentifier, injection) {
if (isNaN(interceptor.amountInjected)) {
chrome.storage.sync.get(Setting.AMOUNT_INJECTED, function (items) {
storageManager.type.get(Setting.AMOUNT_INJECTED, function (items) {
interceptor.amountInjected = items.amountInjected;
chrome.storage.sync.set({
storageManager.type.set({
[Setting.AMOUNT_INJECTED]: ++interceptor.amountInjected
});
});
} else {
chrome.storage.sync.set({
chrome.storage.local.set({
[Setting.AMOUNT_INJECTED]: ++interceptor.amountInjected
});
}
@ -83,7 +83,7 @@ stateManager.addDomainToWhitelist = function (domain) {
let whitelistedDomains = requestAnalyzer.whitelistedDomains;
whitelistedDomains[domain] = true;
chrome.storage.sync.set({whitelistedDomains}, resolve);
storageManager.type.set({whitelistedDomains}, resolve);
});
};
@ -94,7 +94,7 @@ stateManager.removeDomainFromWhitelist = function (domain) {
let whitelistedDomains = requestAnalyzer.whitelistedDomains;
delete whitelistedDomains[domain];
chrome.storage.sync.set({whitelistedDomains}, resolve);
storageManager.type.set({whitelistedDomains}, resolve);
});
};
@ -105,7 +105,7 @@ stateManager.addDomainToManipulateDOMlist = function (domain) {
let domainsManipulateDOM = requestAnalyzer.domainsManipulateDOM;
domainsManipulateDOM[domain] = true;
chrome.storage.sync.set({domainsManipulateDOM}, resolve);
storageManager.type.set({domainsManipulateDOM}, resolve);
});
};
@ -116,7 +116,7 @@ stateManager.removeDomainFromManipulateDOMlist = function (domain) {
let domainsManipulateDOM = requestAnalyzer.domainsManipulateDOM;
delete domainsManipulateDOM[domain];
chrome.storage.sync.set({domainsManipulateDOM}, resolve);
storageManager.type.set({domainsManipulateDOM}, resolve);
});
};
@ -288,7 +288,7 @@ chrome.tabs.query({}, function (tabs) {
tabs.forEach(stateManager._createTab);
});
chrome.storage.sync.get([Setting.SHOW_ICON_BADGE, Setting.SELECTED_ICON], function (items) {
storageManager.type.get([Setting.SHOW_ICON_BADGE, Setting.SELECTED_ICON], function (items) {
if (items.showIconBadge === undefined) {
items.showIconBadge = true;

View File

@ -6,6 +6,7 @@
</head>
<body>
<script src="../../core/constants.js"></script>
<script src="../../core/storage-manager.js"></script>
<script src="../../modules/internal/wrappers.js"></script>
<script src="../../modules/internal/helpers.js"></script>

View File

@ -9,6 +9,7 @@
</head>
<body>
<script src="../../core/constants.js"></script>
<script src="../../core/storage-manager.js"></script>
<script src="../../modules/internal/helpers.js"></script>
<script src="../../modules/internal/rule-generator.js"></script>
<script src="../../modules/internal/wrappers.js"></script>

View File

@ -79,6 +79,7 @@ options._renderOptionsPanel = function () {
elements.selectedIcon.value = options._optionValues.selectedIcon;
elements.internalStatistics.checked = options._optionValues.internalStatistics;
elements.allowedDomainsGoogleFonts.value = domainAllowedGoogleFonts;
elements.storageType = options._optionValues.storageType;
options._registerOptionChangedEventListeners(elements);
options._registerMiscellaneousEventListeners();
@ -105,6 +106,8 @@ options._renderOptionsPanel = function () {
document.getElementById('link-faq').addEventListener('click', options._onClickFaq);
document.getElementById('ruleset-help-icon').addEventListener('click', options._onClickRulesetHelp);
document.getElementById('link-statistic').addEventListener('click', options._onClickStatistics);
document.getElementById('storage-type-local').addEventListener('change', options._onStorageOptionChanged);
document.getElementById('storage-type-sync').addEventListener('change', options._onStorageOptionChanged);
};
options._renderBlockMissingNotice = function () {
@ -157,7 +160,7 @@ options._determineOptionValues = function () {
return new Promise((resolve) => {
let optionKeys = Object.keys(options._optionElements);
chrome.storage.sync.get(optionKeys, function (items) {
storageManager.type.get(optionKeys, function (items) {
options._optionValues = items;
resolve();
});
@ -166,8 +169,9 @@ options._determineOptionValues = function () {
options._determineLocalOptionValues = function () {
return new Promise((resolve) => {
chrome.storage.local.get([Setting.INTERNAL_STATISTICS], function (items) {
chrome.storage.local.get([Setting.INTERNAL_STATISTICS, Setting.STORAGE_TYPE], function (items) {
options._internalStatistics = items.internalStatistics;
options._storageType = items.storageType;
resolve();
});
});
@ -193,6 +197,7 @@ options._getOptionElements = function () {
[Setting.BLOCK_GOOGLE_FONTS]: options._getOptionElement(Setting.BLOCK_GOOGLE_FONTS),
[Setting.SELECTED_ICON]: options._getOptionElement(Setting.SELECTED_ICON),
[Setting.ALLOWED_DOMAINS_GOOGLE_FONTS]: options._getOptionElement(Setting.ALLOWED_DOMAINS_GOOGLE_FONTS),
[Setting.STORAGE_TYPE]: options._getOptionElement(Setting.STORAGE_TYPE)
};
return optionElements;
@ -252,7 +257,7 @@ options._onDocumentLoaded = function () {
};
options._onOptionChanged = function ({ target }) {
let optionKey, optionType, optionValue, storageType;
let optionKey, optionType, optionValue;
optionKey = target.getAttribute('data-option');
optionType = target.getAttribute('type');
@ -300,18 +305,17 @@ options._onOptionChanged = function ({ target }) {
if (optionKey === Setting.SELECTED_ICON) {
wrappers.setIcon({ path: optionValue }, 'Enabled');
}
if (optionKey === Setting.INTERNAL_STATISTICS) {
storageType = chrome.storage.local;
} else {
storageType = chrome.storage.sync;
}
storageType.set({
storageManager.type.set({
[optionKey]: optionValue,
});
};
options._onStorageOptionChanged = function ({ target }) {
chrome.storage.local.set({
[Setting.STORAGE_TYPE]: target.value,
});
};
options._onClickHTMLFilterWarning = function () {
chrome.tabs.create({
url: 'https://codeberg.org/nobody/LocalCDN/wiki/Blank-websites-or-weird-characters',
@ -383,6 +387,7 @@ options._updatesDomainLists = function (changes) {
* Initializations
*/
options._internalStatistics = false;
options._storageType = 'local';
document.addEventListener('DOMContentLoaded', options._onDocumentLoaded);

View File

@ -9,6 +9,7 @@
</head>
<body>
<script src="../../core/constants.js"></script>
<script src="../../core/storage-manager.js"></script>
<script src="../../modules/internal/helpers.js"></script>
<script src="popup.js"></script>
<header>

View File

@ -237,7 +237,7 @@ popup._determineTargetTab = function () {
popup._determineAmountInjected = function () {
return new Promise((resolve) => {
chrome.storage.sync.get(Setting.AMOUNT_INJECTED, function (items) {
chrome.storage.local.get(Setting.AMOUNT_INJECTED, function (items) {
popup._amountInjected = items.amountInjected || 0;
resolve();
});
@ -246,7 +246,7 @@ popup._determineAmountInjected = function () {
popup._determineNegateHtmlFilterOption = function () {
return new Promise((resolve) => {
chrome.storage.sync.get(Setting.NEGATE_HTML_FILTER_LIST, function (items) {
storageManager.type.get(Setting.NEGATE_HTML_FILTER_LIST, function (items) {
popup.negateHtmlFilterList = items.negateHtmlFilterList;
resolve();
});

View File

@ -28,6 +28,7 @@
<li>Added CDN: gitcdn.github.io (<a href="https://codeberg.org/nobody/LocalCDN/issues/90">#90</a>)</li>
<li>Added: Bootstrap Toggle v2.2.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/90">#90</a>)</li>
<li>Implemented: Open options in new tab (<a href="https://codeberg.org/nobody/LocalCDN/issues/91">#91</a>)</li>
<li>Implemented: Storage handler (<a href="https://codeberg.org/nobody/LocalCDN/issues/92">#92</a>)</li>
<li>Updated: Google Material Icons (<a href="https://codeberg.org/nobody/LocalCDN/issues/94">#94</a>)</li>
<li>Added: P2P Media Loader Hls.js (v0.6.2) (<a href="https://codeberg.org/nobody/LocalCDN/issues/95">#95</a>)</li>
</ul>