/** * Entry Point * Belongs to LocalCDN (since 2020-02-26) * (Origin: Decentraleyes) * * @author Thomas Rientjes * @since 2016-04-04 * * @author nobody * @since 2020-02-26 * * @license MPL-2.0 * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ 'use strict'; /** * Main */ var main = {}; /** * Private Methods */ main._initializeSettings = function () { storageManager.checkStorageType(); storageManager.type.get(null, function (items) { // Delete old keys if (items.whitelistedDomains !== undefined) { if (items.allowlistedDomains === undefined || Object.keys(items.allowlistedDomains).length === 0) { items['allowlistedDomains'] = items.whitelistedDomains; } delete items['whitelistedDomains']; storageManager.type.remove('whitelistedDomains'); } // Convert value of notifications if (items.hideReleaseNotes !== undefined) { if (items.hideReleaseNotes === true) { items.updateNotification = 0; } else { items.updateNotification = 2; } delete items['hideReleaseNotes']; storageManager.type.remove('hideReleaseNotes'); } // Use default if key is missing for (const key of Object.keys(SettingDefaults)) { if (items[key] === undefined) { items[key] = SettingDefaults[key]; } } if (items.disablePrefetch !== false) { chrome.privacy.network.networkPredictionEnabled.set({ 'value': false }); } stateManager.selectedIcon = items.selectedIcon; wrappers.setIcon({ 'path': stateManager.selectedIcon }, 'Enabled'); storageManager.amountInjected = items.amountInjected || 0; interceptor.xhrTestDomain = items.xhrTestDomain || Address.LOCALCDN; interceptor.allowedDomainsGoogleFonts = items.allowedDomainsGoogleFonts || {}; interceptor.blockMissing = items.blockMissing === undefined ? false : items.blockMissing; interceptor.blockGoogleFonts = items.blockGoogleFonts === undefined ? true : items.blockGoogleFonts; storageManager.type.set(items); }); }; main._showReleaseNotes = function (details) { storageManager.checkStorageType(); if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) { storageManager.type.set({ [Setting.LAST_MAPPING_UPDATE]: mappings.lastMappingUpdate }, function () { if (details.temporary !== true) { chrome.tabs.create({ 'url': chrome.runtime.getURL('pages/welcome/welcome.html'), 'active': true }); } }); } else if (details.reason === chrome.runtime.OnInstalledReason.UPDATE) { storageManager.type.get(null, function (items) { let mappingUpdate = items.lastMappingUpdate !== mappings.lastMappingUpdate; // Remove old keys for (const key of Object.keys(items)) { if (!(key in SettingDefaults)) { delete items[key]; } } // Override old value https://codeberg.org/nobody/LocalCDN/issues/177 items.xhrTestDomain = 'localcdn.org'; // Updated mappings.js if (mappingUpdate) { items.lastMappingUpdate = mappings.lastMappingUpdate; storageManager.type.set(items); } if ((mappingUpdate && items.updateNotification === 1) || items.updateNotification === 2) { chrome.tabs.create({ 'url': chrome.runtime.getURL(`pages/updates/updates.html?mappingupdate=${mappingUpdate}`), 'active': false }); } else { // No mappings.js update } }); } }; /** * Initializations */ chrome.runtime.onInstalled.addListener(main._showReleaseNotes); main._initializeSettings();