feat(ApiCheckPopup): 使用Promise.all并行处理API验证请求并更新状态
This commit is contained in:
parent
3698238e9e
commit
464634d051
@ -43,25 +43,37 @@ const PopupContainer: React.FC<Props> = ({ title, provider, model, apiKeys, type
|
||||
const newStatuses = [...keyStatuses]
|
||||
|
||||
try {
|
||||
for (let i = 0; i < newStatuses.length; i++) {
|
||||
// 使用Promise.all并行处理所有API验证请求
|
||||
const checkPromises = newStatuses.map(async (status, i) => {
|
||||
// 先更新当前密钥为检查中状态
|
||||
setKeyStatuses((prev) => prev.map((status, idx) => (idx === i ? { ...status, checking: true } : status)))
|
||||
|
||||
try {
|
||||
let valid = false
|
||||
if (type === 'provider' && model) {
|
||||
const result = await checkApi({ ...(provider as Provider), apiKey: newStatuses[i].key }, model)
|
||||
const result = await checkApi({ ...(provider as Provider), apiKey: status.key }, model)
|
||||
valid = result.valid
|
||||
} else {
|
||||
const result = await WebSearchService.checkSearch({
|
||||
...(provider as WebSearchProvider),
|
||||
apiKey: newStatuses[i].key
|
||||
apiKey: status.key
|
||||
})
|
||||
valid = result.valid
|
||||
}
|
||||
|
||||
setKeyStatuses((prev) =>
|
||||
prev.map((status, idx) => (idx === i ? { ...status, checking: false, isValid: valid } : status))
|
||||
)
|
||||
// 更新验证结果
|
||||
setKeyStatuses((prev) => prev.map((s, idx) => (idx === i ? { ...s, checking: false, isValid: valid } : s)))
|
||||
|
||||
return { index: i, valid }
|
||||
} catch (error) {
|
||||
// 处理错误情况
|
||||
setKeyStatuses((prev) => prev.map((s, idx) => (idx === i ? { ...s, checking: false, isValid: false } : s)))
|
||||
return { index: i, valid: false }
|
||||
}
|
||||
})
|
||||
|
||||
// 等待所有请求完成
|
||||
await Promise.all(checkPromises)
|
||||
} finally {
|
||||
setIsChecking(false)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user