From e1ca2a65e4986741276a880f8a9904b0716c023e Mon Sep 17 00:00:00 2001 From: QLHazyCoder <2825305047@qq.com> Date: Sat, 11 Apr 2026 02:57:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20CPA=20=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E8=BE=93=E5=85=A5=E6=A1=86=E7=9A=84=E6=98=BE=E7=A4=BA?= =?UTF-8?q?/=E9=9A=90=E8=97=8F=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sidepanel/sidepanel.html | 5 ++++- sidepanel/sidepanel.js | 31 +++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/sidepanel/sidepanel.html b/sidepanel/sidepanel.html index b7bc20a..98a4d9c 100644 --- a/sidepanel/sidepanel.html +++ b/sidepanel/sidepanel.html @@ -46,7 +46,10 @@
CPA - +
+ + +
管理密钥 diff --git a/sidepanel/sidepanel.js b/sidepanel/sidepanel.js index 6319445..f9ded6f 100644 --- a/sidepanel/sidepanel.js +++ b/sidepanel/sidepanel.js @@ -17,6 +17,7 @@ const displayStatus = document.getElementById('display-status'); const statusBar = document.getElementById('status-bar'); const inputEmail = document.getElementById('input-email'); const inputPassword = document.getElementById('input-password'); +const btnToggleVpsUrl = document.getElementById('btn-toggle-vps-url'); const btnFetchEmail = document.getElementById('btn-fetch-email'); const btnTogglePassword = document.getElementById('btn-toggle-password'); const btnSaveSettings = document.getElementById('btn-save-settings'); @@ -680,11 +681,27 @@ async function fetchDuckEmail(options = {}) { } } +function syncToggleButtonLabel(button, input, labels) { + if (!button || !input) return; + + const isHidden = input.type === 'password'; + button.innerHTML = isHidden ? EYE_OPEN_ICON : EYE_CLOSED_ICON; + button.setAttribute('aria-label', isHidden ? labels.show : labels.hide); + button.title = isHidden ? labels.show : labels.hide; +} + function syncPasswordToggleLabel() { - const isHidden = inputPassword.type === 'password'; - btnTogglePassword.innerHTML = isHidden ? EYE_OPEN_ICON : EYE_CLOSED_ICON; - btnTogglePassword.setAttribute('aria-label', isHidden ? '显示密码' : '隐藏密码'); - btnTogglePassword.title = isHidden ? '显示密码' : '隐藏密码'; + syncToggleButtonLabel(btnTogglePassword, inputPassword, { + show: '显示密码', + hide: '隐藏密码', + }); +} + +function syncVpsUrlToggleLabel() { + syncToggleButtonLabel(btnToggleVpsUrl, inputVpsUrl, { + show: '显示 CPA 地址', + hide: '隐藏 CPA 地址', + }); } async function maybeTakeoverAutoRun(actionLabel) { @@ -788,6 +805,11 @@ btnTogglePassword.addEventListener('click', () => { syncPasswordToggleLabel(); }); +btnToggleVpsUrl.addEventListener('click', () => { + inputVpsUrl.type = inputVpsUrl.type === 'password' ? 'text' : 'password'; + syncVpsUrlToggleLabel(); +}); + btnSaveSettings.addEventListener('click', async () => { if (!settingsDirty) { showToast('配置已是最新', 'info', 1400); @@ -1086,6 +1108,7 @@ initTheme(); updateSaveButtonState(); restoreState().then(() => { syncPasswordToggleLabel(); + syncVpsUrlToggleLabel(); updateButtonStates(); updateStatusDisplay(latestState); });