mirror of
https://github.com/router-for-me/Cli-Proxy-API-Management-Center.git
synced 2026-06-16 21:03:58 +08:00
fix(providers): reset connectivity status only for the changed key entry
Track per-entry signatures (apiKey + proxyUrl + headersText) so editing one OpenAI key entry no longer clears the success/error state of the other entries. The global signature (baseUrl/headers/models/testModel) keeps clearing every entry as before.
This commit is contained in:
@@ -120,14 +120,35 @@ export function useConnectivityTest(
|
||||
const [claudeStatus, setClaudeStatus] = useState<ConnectivityStatus>(IDLE);
|
||||
const [inFlight, setInFlight] = useState(0);
|
||||
|
||||
const entrySignatures = useMemo(
|
||||
() =>
|
||||
(apiKeyEntries ?? []).map(
|
||||
(entry) =>
|
||||
`${entry.apiKey ?? ''}||${entry.proxyUrl ?? ''}||${entry.headersText ?? ''}`
|
||||
),
|
||||
[apiKeyEntries]
|
||||
);
|
||||
|
||||
const lastEntrySignaturesRef = useRef<string[]>(entrySignatures);
|
||||
useEffect(() => {
|
||||
setOpenaiStatuses((prev) => {
|
||||
if (prev.length === entriesCount) return prev;
|
||||
const next = prev.slice(0, entriesCount);
|
||||
while (next.length < entriesCount) next.push(IDLE);
|
||||
return next;
|
||||
const prev = lastEntrySignaturesRef.current;
|
||||
const curr = entrySignatures;
|
||||
lastEntrySignaturesRef.current = curr;
|
||||
|
||||
setOpenaiStatuses((statuses) => {
|
||||
const nextLen = curr.length;
|
||||
let mutated = statuses.length !== nextLen;
|
||||
const next = statuses.slice(0, nextLen);
|
||||
while (next.length < nextLen) next.push(IDLE);
|
||||
for (let i = 0; i < nextLen; i++) {
|
||||
if (prev[i] !== undefined && prev[i] !== curr[i] && next[i].state !== 'idle') {
|
||||
next[i] = IDLE;
|
||||
mutated = true;
|
||||
}
|
||||
}
|
||||
return mutated ? next : statuses;
|
||||
});
|
||||
}, [entriesCount]);
|
||||
}, [entrySignatures]);
|
||||
|
||||
const signature = useMemo(() => {
|
||||
const h = formHeaders.map((it) => `${it.key}:${it.value}`).join('|');
|
||||
|
||||
Reference in New Issue
Block a user