1
0
mirror of https://codeberg.org/nobody/LocalCDN.git synced 2025-06-05 21:49:31 +02:00

Toggle button for Google Fonts (#620)

This commit is contained in:
nobody
2021-08-13 06:15:10 +02:00
parent 89872e8162
commit e7ff3a2a15
6 changed files with 134 additions and 25 deletions

View File

@@ -43,6 +43,7 @@ popup._renderContents = function () {
popup._determineTargetTab()
.then(popup._determineDomainAllowlistStatus)
.then(popup._determineStatusManipulateDOM)
.then(popup._determineStatusGoogleFonts)
.then(popup._determineResourceInjections)
.then(popup._determineNegateHtmlFilterOption)
.then(popup._renderContextualContents);
@@ -101,9 +102,11 @@ popup._renderContextualContents = function () {
popup._renderDomainAllowlistPanel = function () {
let websiteContextElement, protectionToggleElement, domainIndicatorElement,
manipulateDOMToggleElement, manipulateDOMToggleStyle;
manipulateDOMToggleElement, manipulateDOMToggleStyle, googleFontsToggleElement, googleFontsToggleStyle;
websiteContextElement = document.getElementById('website-context');
websiteContextElement.setAttribute('class', 'panel');
protectionToggleElement = document.getElementById('protection-toggle-switch');
domainIndicatorElement = document.getElementById('domain-indicator');
@@ -112,35 +115,55 @@ popup._renderDomainAllowlistPanel = function () {
manipulateDOMToggleElement = document.getElementById('manipulateDOM-toggle-switch');
manipulateDOMToggleStyle = document.getElementById('toggle-switch-manipulateDOM');
googleFontsToggleElement = document.getElementById('google-fonts-toggle-switch');
googleFontsToggleStyle = document.getElementById('toggle-switch-google-fonts');
if (popup._domainIsAllowlisted === true) {
manipulateDOMToggleElement.disabled = true;
protectionToggleElement.checked = false;
manipulateDOMToggleStyle.setAttribute('class', 'slider-disabled');
googleFontsToggleElement.disabled = true;
googleFontsToggleStyle.setAttribute('class', 'slider-disabled');
protectionToggleElement.checked = false;
protectionToggleElement.addEventListener('click', popup._enableProtection);
} else {
manipulateDOMToggleElement.disabled = false;
manipulateDOMToggleStyle.setAttribute('class', 'slider');
protectionToggleElement.checked = true;
protectionToggleElement.addEventListener('click', popup._disableProtection);
if (popup.negateHtmlFilterList && !popup._domainManipulateDOM) {
manipulateDOMToggleElement.checked = true;
manipulateDOMToggleElement.addEventListener('click', popup._enableManipulateDOM);
} else if (!popup.negateHtmlFilterList && !popup._domainManipulateDOM) {
manipulateDOMToggleElement.checked = false;
manipulateDOMToggleElement.addEventListener('click', popup._enableManipulateDOM);
} else if (popup.negateHtmlFilterList && popup._domainManipulateDOM) {
manipulateDOMToggleElement.checked = false;
manipulateDOMToggleElement.addEventListener('click', popup._disableManipulateDOM);
} else if (!popup.negateHtmlFilterList && popup._domainManipulateDOM) {
manipulateDOMToggleElement.checked = true;
manipulateDOMToggleElement.addEventListener('click', popup._disableManipulateDOM);
}
return;
}
websiteContextElement.setAttribute('class', 'panel');
if (popup._blockGoogleFonts === false) {
document.getElementById('div-google-fonts').hidden = true;
}
googleFontsToggleStyle.setAttribute('class', 'slider');
googleFontsToggleElement.disabled = false;
if (popup._domainGoogleFonts) {
googleFontsToggleElement.checked = true;
googleFontsToggleElement.addEventListener('click', popup._disableGoogleFonts);
} else {
googleFontsToggleElement.checked = false;
googleFontsToggleElement.addEventListener('click', popup._enableGoogleFonts);
}
manipulateDOMToggleElement.disabled = false;
manipulateDOMToggleStyle.setAttribute('class', 'slider');
protectionToggleElement.checked = true;
protectionToggleElement.addEventListener('click', popup._disableProtection);
if (popup.negateHtmlFilterList && !popup._domainManipulateDOM) {
manipulateDOMToggleElement.checked = true;
manipulateDOMToggleElement.addEventListener('click', popup._enableManipulateDOM);
} else if (!popup.negateHtmlFilterList && !popup._domainManipulateDOM) {
manipulateDOMToggleElement.checked = false;
manipulateDOMToggleElement.addEventListener('click', popup._enableManipulateDOM);
} else if (popup.negateHtmlFilterList && popup._domainManipulateDOM) {
manipulateDOMToggleElement.checked = false;
manipulateDOMToggleElement.addEventListener('click', popup._disableManipulateDOM);
} else if (!popup.negateHtmlFilterList && popup._domainManipulateDOM) {
manipulateDOMToggleElement.checked = true;
manipulateDOMToggleElement.addEventListener('click', popup._disableManipulateDOM);
}
};
popup._renderInjectionPanel = function (groupedInjections) {
@@ -196,6 +219,28 @@ popup._disableManipulateDOM = function () {
});
};
popup._enableGoogleFonts = function () {
let message = {
'topic': 'google-fonts:add-domain',
'value': popup._domain,
};
chrome.runtime.sendMessage(message, function () {
popup._onToggled();
});
};
popup._disableGoogleFonts = function () {
let message = {
'topic': 'google-fonts:remove-domain',
'value': popup._domain,
};
chrome.runtime.sendMessage(message, function () {
popup._onToggled();
});
};
popup._determineDomainAllowlistStatus = function () {
return new Promise((resolve) => {
let message = {
@@ -228,6 +273,20 @@ popup._determineStatusManipulateDOM = function () {
});
};
popup._determineStatusGoogleFonts = function () {
return new Promise((resolve) => {
let message = {
'topic': 'domain:fetch-is-google-fonts',
'value': popup._domain,
};
chrome.runtime.sendMessage(message, function (response) {
popup._domainGoogleFonts = response.value;
resolve();
});
});
};
popup._determineResourceInjections = function () {
return new Promise((resolve) => {
let message = {
@@ -266,6 +325,7 @@ popup._getData = function () {
popup.negateHtmlFilterList = items.data.negateHtmlFilterList;
popup._loggingStatus = items.data.loggingStatus;
popup.hideDonationButton = items.data.hideDonationButton;
popup._blockGoogleFonts = items.data.blockGoogleFonts;
resolve();
});
});
@@ -558,5 +618,6 @@ popup._onLoggingButtonClicked = function () {
popup.negateHtmlFilterList = false;
popup._statisticsStatus = false;
popup._loggingStatus = false;
popup._blockGoogleFonts = true;
document.addEventListener('DOMContentLoaded', popup._onDocumentLoaded);