diff --git a/lib/main.js b/lib/main.js index bb38539d9e2204708e521136748c42a85b348a2f..fe24d2a9f1a51421723a85a1e0a250f1041b7860 100644 --- a/lib/main.js +++ b/lib/main.js @@ -83,24 +83,41 @@ exports.main = function (options) { preferences.on('', function (preferenceName) { + let content = null; + if (preferenceName === 'amountInjected') { return; } + if (preferenceName === 'domainWhitelist') { + + let domainWhitelist = preferences.prefs['domainWhitelist']; + + content = { + 'whitelistedDomains': _parseDomainWhitelist(domainWhitelist) + }; + + } else { + + content = { + [preferenceName]: preferences.prefs[preferenceName] + }; + } + port.postMessage({ 'subject': 'update-preferences', - 'content': { - [preferenceName]: preferences.prefs[preferenceName] - } + 'content': content }); }); + let domainWhitelist = preferences.prefs['domainWhitelist']; + port.postMessage({ 'subject': 'migrate-preferences', 'content': { 'amountInjected': preferences.prefs['amountInjected'], 'blockMissing': preferences.prefs['blockMissing'], - 'domainWhitelist': preferences.prefs['domainWhitelist'], + 'whitelistedDomains': _parseDomainWhitelist(domainWhitelist), 'showReleaseNotes': preferences.prefs['showReleaseNotes'] } }); @@ -126,3 +143,29 @@ exports.broadcastInjection = function () { }); } }; + +/** + * Private Methods + */ + +function _parseDomainWhitelist(value) { + + let whitelistedDomains = {}; + + value.split(';').forEach(function (domain) { + whitelistedDomains[_normalizeDomain(domain)] = true; + }); + + return whitelistedDomains; +} + +function _normalizeDomain(domain) { + + domain = domain.toLowerCase().trim(); + + if (domain.startsWith('www.')) { + domain = domain.slice(4); + } + + return domain; +}