diff --git a/src/renderer/components/AddProviderModal.css b/src/renderer/components/AddProviderModal.css index 5ffbedb..6e3ff37 100644 --- a/src/renderer/components/AddProviderModal.css +++ b/src/renderer/components/AddProviderModal.css @@ -149,4 +149,34 @@ color: #7f8c8d; font-size: 0.8rem; line-height: 1.3; +} + +/* 添加标签和选择框的样式 */ +.label-with-checkbox { + display: flex; + justify-content: space-between; + align-items: baseline; + margin-bottom: 0.5rem; +} + +.label-with-checkbox label:first-child { + margin-bottom: 0; +} + +.checkbox-label { + display: flex; + align-items: center; + gap: 0.3rem; + font-size: 0.85rem; + color: #666; + font-weight: normal; + margin-bottom: 0; + cursor: pointer; +} + +.checkbox-label input[type="checkbox"] { + width: auto; + margin: 2px; + cursor: pointer; + transform: translateY(2px); } \ No newline at end of file diff --git a/src/renderer/components/AddProviderModal.tsx b/src/renderer/components/AddProviderModal.tsx index 08a86bd..5c6a478 100644 --- a/src/renderer/components/AddProviderModal.tsx +++ b/src/renderer/components/AddProviderModal.tsx @@ -1,5 +1,6 @@ import React, { useState } from "react"; import { Provider } from "../../shared/types"; +import { updateCoAuthoredSetting, checkCoAuthoredSetting, extractWebsiteUrl } from "../utils/providerConfigUtils"; import "./AddProviderModal.css"; interface AddProviderModalProps { @@ -17,6 +18,7 @@ const AddProviderModal: React.FC = ({ settingsConfig: "" }); const [error, setError] = useState(""); + const [disableCoAuthored, setDisableCoAuthored] = useState(false); // 预设的供应商配置模板 const presets = [ @@ -82,22 +84,6 @@ const AddProviderModal: React.FC = ({ }); }; - // 从JSON配置中提取并处理官网地址 - const extractWebsiteUrl = (jsonString: string): string => { - try { - const config = JSON.parse(jsonString); - const baseUrl = config?.env?.ANTHROPIC_BASE_URL; - - if (baseUrl && typeof baseUrl === 'string') { - // 去掉 "api." 前缀 - return baseUrl.replace(/^https?:\/\/api\./, 'https://'); - } - } catch (err) { - // 忽略JSON解析错误 - } - return ''; - }; - const handleChange = ( e: React.ChangeEvent ) => { @@ -107,6 +93,10 @@ const AddProviderModal: React.FC = ({ // 当用户修改配置时,尝试自动提取官网地址 const extractedWebsiteUrl = extractWebsiteUrl(value); + // 同时检查并同步选择框状态 + const hasCoAuthoredDisabled = checkCoAuthoredSetting(value); + setDisableCoAuthored(hasCoAuthoredDisabled); + setFormData({ ...formData, [name]: value, @@ -121,12 +111,30 @@ const AddProviderModal: React.FC = ({ } }; + // 处理选择框变化 + const handleCoAuthoredToggle = (checked: boolean) => { + setDisableCoAuthored(checked); + + // 更新JSON配置 + const updatedConfig = updateCoAuthoredSetting(formData.settingsConfig, checked); + setFormData({ + ...formData, + settingsConfig: updatedConfig, + }); + }; + const applyPreset = (preset: typeof presets[0]) => { + const configString = JSON.stringify(preset.settingsConfig, null, 2); + setFormData({ name: preset.name, websiteUrl: preset.websiteUrl, - settingsConfig: JSON.stringify(preset.settingsConfig, null, 2) + settingsConfig: configString }); + + // 同步选择框状态 + const hasCoAuthoredDisabled = checkCoAuthoredSetting(configString); + setDisableCoAuthored(hasCoAuthoredDisabled); }; return ( @@ -179,7 +187,17 @@ const AddProviderModal: React.FC = ({
- +
+ + +