Files
WebView2Browser/assets/wvbrowser_ui/content_ui/settings.js
2025-07-07 09:39:03 +08:00

108 lines
2.9 KiB
JavaScript

const messageHandler = event => {
var message = event.data.message;
var args = event.data.args;
switch (message) {
case commands.MG_GET_SETTINGS:
loadSettings(args.settings);
break;
case commands.MG_CLEAR_CACHE:
if (args.content && args.controls) {
updateLabelForEntry('entry-cache', 'Cleared');
} else {
updateLabelForEntry('entry-cache', 'Try again');
}
break;
case commands.MG_CLEAR_COOKIES:
if (args.content && args.controls) {
updateLabelForEntry('entry-cookies', 'Cleared');
} else {
updateLabelForEntry('entry-cookies', 'Try again');
}
break;
default:
console.log(`Unexpected message: ${JSON.stringify(event.data)}`);
break;
}
};
function addEntriesListeners() {
let cacheEntry = document.getElementById('entry-cache');
cacheEntry.addEventListener('click', function(e) {
let message = {
message: commands.MG_CLEAR_CACHE,
args: {}
};
window.chrome.webview.postMessage(message);
});
let cookiesEntry = document.getElementById('entry-cookies');
cookiesEntry.addEventListener('click', function(e) {
let message = {
message: commands.MG_CLEAR_COOKIES,
args: {}
};
window.chrome.webview.postMessage(message);
});
let scriptEntry = document.getElementById('entry-script');
scriptEntry.addEventListener('click', function(e) {
// Toggle script support
});
let popupsEntry = document.getElementById('entry-popups');
popupsEntry.addEventListener('click', function(e) {
// Toggle popups
});
}
function requestBrowserSettings() {
let message = {
message: commands.MG_GET_SETTINGS,
args: {}
};
window.chrome.webview.postMessage(message);
}
function loadSettings(settings) {
if (settings.scriptsEnabled) {
updateLabelForEntry('entry-script', 'Enabled');
} else {
updateLabelForEntry('entry-script', 'Disabled');
}
if (settings.blockPopups) {
updateLabelForEntry('entry-popups', 'Blocked');
} else {
updateLabelForEntry('entry-popups', 'Allowed');
}
}
function updateLabelForEntry(elementId, label) {
let entryElement = document.getElementById(elementId);
if (!entryElement) {
console.log(`Element with id ${elementId} does not exist`);
return;
}
let labelSpan = entryElement.querySelector(`.entry-value span`);
if (!labelSpan) {
console.log(`${elementId} does not have a label`);
return;
}
labelSpan.textContent = label;
}
function init() {
window.chrome.webview.addEventListener('message', messageHandler);
requestBrowserSettings();
addEntriesListeners();
}
init();