修复URL推测功能:支持不完整URL输入并保持验证

- 修复inferWebsiteUrl函数,支持无协议URL的推测
- 在API地址失焦时自动补全https://协议
- 同时更新API地址和网站地址字段
- 保持URL输入验证,确保API地址有效性
- 提升用户体验:用户可输入api.example.com等简化格式
This commit is contained in:
farion1231
2025-08-06 11:42:58 +08:00
parent 71a8fd166f
commit 208987107e
3 changed files with 48 additions and 3 deletions

View File

@@ -43,6 +43,24 @@ const AddProviderModal: React.FC<AddProviderModalProps> = ({ onAdd, onClose }) =
setFormData(newFormData)
}
const handleApiUrlBlur = (e: React.FocusEvent<HTMLInputElement>) => {
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)
}))
}
}
// 预设的供应商配置
const presets = [
{
@@ -109,6 +127,7 @@ const AddProviderModal: React.FC<AddProviderModalProps> = ({ onAdd, onClose }) =
name="apiUrl"
value={formData.apiUrl}
onChange={handleChange}
onBlur={handleApiUrlBlur}
placeholder="https://api.anthropic.com"
required
/>
@@ -117,7 +136,7 @@ const AddProviderModal: React.FC<AddProviderModalProps> = ({ onAdd, onClose }) =
<div className="form-group">
<label htmlFor="websiteUrl"></label>
<input
type="url"
type="text"
id="websiteUrl"
name="websiteUrl"
value={formData.websiteUrl}