import {ipcRenderer} from "electron"; import * as ConfigUtil from "../../../../common/config-util"; import {html} from "../../../../common/html"; import * as t from "../../../../common/translation-util"; import {generateSettingOption} from "./base-section"; interface NetworkSectionProps { $root: Element; } export function initNetworkSection(props: NetworkSectionProps): void { props.$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 = document.querySelector( "#proxy-pac-option .setting-input-value", )!; const $proxyRules: HTMLInputElement = document.querySelector( "#proxy-rules-option .setting-input-value", )!; const $proxyBypass: HTMLInputElement = document.querySelector( "#proxy-bypass-option .setting-input-value", )!; const $proxySaveAction = document.querySelector("#proxy-save-action")!; const $manualProxyBlock = props.$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 { if (option) { $manualProxyBlock.classList.remove("hidden"); } else { $manualProxyBlock.classList.add("hidden"); } } function updateProxyOption(): void { generateSettingOption({ $element: document.querySelector( "#use-system-settings .setting-control", )!, value: ConfigUtil.getConfigItem("useSystemProxy", false), clickHandler: () => { const newValue = !ConfigUtil.getConfigItem("useSystemProxy"); const manualProxyValue = ConfigUtil.getConfigItem("useManualProxy"); 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: document.querySelector( "#use-manual-settings .setting-control", )!, value: ConfigUtil.getConfigItem("useManualProxy", false), clickHandler: () => { const newValue = !ConfigUtil.getConfigItem("useManualProxy"); const systemProxyValue = ConfigUtil.getConfigItem("useSystemProxy"); 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(); }, }); } }