diff --git a/src/components/settings/NetworkPanel.tsx b/src/components/settings/NetworkPanel.tsx index 5fe2b41d..773e83e7 100644 --- a/src/components/settings/NetworkPanel.tsx +++ b/src/components/settings/NetworkPanel.tsx @@ -119,7 +119,30 @@ export const NetworkPanel: React.FC = ({ t }) => { role="switch" aria-checked={form.enabled} aria-label={t('启用网络代理', 'Enable network proxy')} - onClick={() => setForm({ ...form, enabled: !form.enabled })} + onClick={async () => { + const newForm = { ...form, enabled: !form.enabled }; + setForm(newForm); + // 立即持久化,无需用户手动点击保存 + setProxyConfig(newForm); + // 同步到后端 + if (backend.isAvailable) { + try { + const authHeaders: Record = { 'Content-Type': 'application/json' }; + if (backendApiSecret) { + authHeaders['Authorization'] = `Bearer ${backendApiSecret}`; + } + await fetch('/api/settings/proxy', { + method: 'PUT', + headers: authHeaders, + body: JSON.stringify(newForm), + }); + } catch { /* best effort */ } + } + // 同步到 Electron + if (isElectron()) { + try { await electronProxy.setProxy(newForm); } catch { /* best effort */ } + } + }} className={`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${form.enabled ? 'bg-brand-indigo' : 'bg-gray-300 dark:bg-gray-600'}`} >