import * as ConfigUtil from "../../../../common/config-util.js"; import {html} from "../../../../common/html.js"; import * as t from "../../../../common/translation-util.js"; import {ipcRenderer} from "../../typed-ipc-renderer.js"; import {generateSettingOption} from "./base-section.js"; type NetworkSectionProperties = { $root: Element; }; export function initNetworkSection({$root}: NetworkSectionProperties): void { $root.innerHTML = html`
${t.__("Proxy")}
${t.__("Use system proxy settings (requires restart)")}
${t.__("Manual proxy configuration")}
PAC ${t.__("script")}
${t.__("Proxy rules")}
${t.__("Proxy bypass rules")}
${t.__("Save")}
`.html; const $proxyPac: HTMLInputElement = $root.querySelector( "#proxy-pac-option .setting-input-value", )!; const $proxyRules: HTMLInputElement = $root.querySelector( "#proxy-rules-option .setting-input-value", )!; const $proxyBypass: HTMLInputElement = $root.querySelector( "#proxy-bypass-option .setting-input-value", )!; const $proxySaveAction = $root.querySelector("#proxy-save-action")!; const $manualProxyBlock = $root.querySelector(".manual-proxy-block")!; toggleManualProxySettings(ConfigUtil.getConfigItem("useManualProxy", false)); updateProxyOption(); $proxyPac.value = ConfigUtil.getConfigItem("proxyPAC", ""); $proxyRules.value = ConfigUtil.getConfigItem("proxyRules", ""); $proxyBypass.value = ConfigUtil.getConfigItem("proxyBypass", ""); $proxySaveAction.addEventListener("click", () => { ConfigUtil.setConfigItem("proxyPAC", $proxyPac.value); ConfigUtil.setConfigItem("proxyRules", $proxyRules.value); ConfigUtil.setConfigItem("proxyBypass", $proxyBypass.value); ipcRenderer.send("forward-message", "reload-proxy", true); }); function toggleManualProxySettings(option: boolean): void { $manualProxyBlock.classList.toggle("hidden", !option); } function updateProxyOption(): void { generateSettingOption({ $element: $root.querySelector("#use-system-settings .setting-control")!, value: ConfigUtil.getConfigItem("useSystemProxy", false), clickHandler() { const newValue = !ConfigUtil.getConfigItem("useSystemProxy", false); const manualProxyValue = ConfigUtil.getConfigItem( "useManualProxy", false, ); if (manualProxyValue && newValue) { ConfigUtil.setConfigItem("useManualProxy", !manualProxyValue); toggleManualProxySettings(!manualProxyValue); } if (!newValue) { // Remove proxy system proxy settings ConfigUtil.setConfigItem("proxyRules", ""); ipcRenderer.send("forward-message", "reload-proxy", false); } ConfigUtil.setConfigItem("useSystemProxy", newValue); updateProxyOption(); }, }); generateSettingOption({ $element: $root.querySelector("#use-manual-settings .setting-control")!, value: ConfigUtil.getConfigItem("useManualProxy", false), clickHandler() { const newValue = !ConfigUtil.getConfigItem("useManualProxy", false); const systemProxyValue = ConfigUtil.getConfigItem( "useSystemProxy", false, ); toggleManualProxySettings(newValue); if (systemProxyValue && newValue) { ConfigUtil.setConfigItem("useSystemProxy", !systemProxyValue); } ConfigUtil.setConfigItem("proxyRules", ""); ConfigUtil.setConfigItem("useManualProxy", newValue); // Reload app only when turning manual proxy off, hence !newValue ipcRenderer.send("forward-message", "reload-proxy", !newValue); updateProxyOption(); }, }); } }