import React, { useState, useEffect } from 'react' import { Provider } from '../../shared/types' import { inferWebsiteUrl } from '../../shared/utils' import './AddProviderModal.css' interface EditProviderModalProps { provider: Provider onSave: (provider: Provider) => void onClose: () => void } const EditProviderModal: React.FC = ({ provider, onSave, onClose }) => { const [formData, setFormData] = useState({ name: provider.name, apiUrl: provider.apiUrl, apiKey: provider.apiKey, websiteUrl: provider.websiteUrl || '' }) const [showPassword, setShowPassword] = useState(false) const [error, setError] = useState('') useEffect(() => { setFormData({ name: provider.name, apiUrl: provider.apiUrl, apiKey: provider.apiKey, websiteUrl: provider.websiteUrl || '' }) }, [provider.id, provider.name, provider.apiUrl, provider.apiKey, provider.websiteUrl]) const handleSubmit = (e: React.FormEvent) => { e.preventDefault() setError('') if (!formData.name || !formData.apiUrl || !formData.apiKey) { setError('请填写所有必填字段') return } onSave({ ...provider, ...formData }) } const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target const newFormData = { ...formData, [name]: value } // 如果修改的是API地址,自动推测网站地址 if (name === 'apiUrl') { newFormData.websiteUrl = inferWebsiteUrl(value) } setFormData(newFormData) } const handleApiUrlBlur = (e: React.FocusEvent) => { const apiUrl = e.target.value.trim() if (apiUrl) { let normalizedApiUrl = apiUrl // 如果没有协议,添加 https:// if (!normalizedApiUrl.match(/^https?:\/\//)) { normalizedApiUrl = 'https://' + normalizedApiUrl } setFormData(prev => ({ ...prev, apiUrl: normalizedApiUrl, websiteUrl: inferWebsiteUrl(normalizedApiUrl) })) } } return (
e.stopPropagation()}>

编辑供应商

{error && (
{error}
)}
用于在面板中显示可访问的网站链接,留空则显示API地址
) } export default EditProviderModal