This commit is contained in:
Supra4E8C
2026-01-31 16:00:40 +08:00
parent 525541ea0d
commit 7b77520526

View File

@@ -116,11 +116,6 @@ const resolveAntigravityProjectId = async (file: AuthFileItem): Promise<string>
return DEFAULT_ANTIGRAVITY_PROJECT_ID; return DEFAULT_ANTIGRAVITY_PROJECT_ID;
}; };
const isAntigravityUnknownFieldError = (message: string): boolean => {
const normalized = message.toLowerCase();
return normalized.includes('unknown name') && normalized.includes('cannot find field');
};
const fetchAntigravityQuota = async ( const fetchAntigravityQuota = async (
file: AuthFileItem, file: AuthFileItem,
t: TFunction t: TFunction
@@ -132,7 +127,7 @@ const fetchAntigravityQuota = async (
} }
const projectId = await resolveAntigravityProjectId(file); const projectId = await resolveAntigravityProjectId(file);
const requestBodies = [JSON.stringify({ projectId }), JSON.stringify({ project: projectId })]; const requestBody = JSON.stringify({ project: projectId });
let lastError = ''; let lastError = '';
let lastStatus: number | undefined; let lastStatus: number | undefined;
@@ -140,55 +135,46 @@ const fetchAntigravityQuota = async (
let hadSuccess = false; let hadSuccess = false;
for (const url of ANTIGRAVITY_QUOTA_URLS) { for (const url of ANTIGRAVITY_QUOTA_URLS) {
for (let attempt = 0; attempt < requestBodies.length; attempt++) { try {
try { const result = await apiCallApi.request({
const result = await apiCallApi.request({ authIndex,
authIndex, method: 'POST',
method: 'POST', url,
url, header: { ...ANTIGRAVITY_REQUEST_HEADERS },
header: { ...ANTIGRAVITY_REQUEST_HEADERS }, data: requestBody
data: requestBodies[attempt] });
});
if (result.statusCode < 200 || result.statusCode >= 300) { if (result.statusCode < 200 || result.statusCode >= 300) {
lastError = getApiCallErrorMessage(result); lastError = getApiCallErrorMessage(result);
lastStatus = result.statusCode; lastStatus = result.statusCode;
if (result.statusCode === 403 || result.statusCode === 404) { if (result.statusCode === 403 || result.statusCode === 404) {
priorityStatus ??= result.statusCode; priorityStatus ??= result.statusCode;
}
if (
result.statusCode === 400 &&
isAntigravityUnknownFieldError(lastError) &&
attempt < requestBodies.length - 1
) {
continue;
}
break;
} }
continue;
}
hadSuccess = true; hadSuccess = true;
const payload = parseAntigravityPayload(result.body ?? result.bodyText); const payload = parseAntigravityPayload(result.body ?? result.bodyText);
const models = payload?.models; const models = payload?.models;
if (!models || typeof models !== 'object' || Array.isArray(models)) { if (!models || typeof models !== 'object' || Array.isArray(models)) {
lastError = t('antigravity_quota.empty_models'); lastError = t('antigravity_quota.empty_models');
continue; continue;
} }
const groups = buildAntigravityQuotaGroups(models as AntigravityModelsPayload); const groups = buildAntigravityQuotaGroups(models as AntigravityModelsPayload);
if (groups.length === 0) { if (groups.length === 0) {
lastError = t('antigravity_quota.empty_models'); lastError = t('antigravity_quota.empty_models');
continue; continue;
} }
return groups; return groups;
} catch (err: unknown) { } catch (err: unknown) {
lastError = err instanceof Error ? err.message : t('common.unknown_error'); lastError = err instanceof Error ? err.message : t('common.unknown_error');
const status = getStatusFromError(err); const status = getStatusFromError(err);
if (status) { if (status) {
lastStatus = status; lastStatus = status;
if (status === 403 || status === 404) { if (status === 403 || status === 404) {
priorityStatus ??= status; priorityStatus ??= status;
}
} }
} }
} }