diff --git a/src/components/quota/QuotaCard.tsx b/src/components/quota/QuotaCard.tsx index b0aa58d..21edf6a 100644 --- a/src/components/quota/QuotaCard.tsx +++ b/src/components/quota/QuotaCard.tsx @@ -61,6 +61,7 @@ interface QuotaCardProps { quota?: TState; resolvedTheme: ResolvedTheme; i18nPrefix: string; + cardIdleMessageKey?: string; cardClassName: string; defaultType: string; renderQuotaItems: (quota: TState, t: TFunction, helpers: QuotaRenderHelpers) => ReactNode; @@ -71,6 +72,7 @@ export function QuotaCard({ quota, resolvedTheme, i18nPrefix, + cardIdleMessageKey, cardClassName, defaultType, renderQuotaItems @@ -88,6 +90,7 @@ export function QuotaCard({ quota?.errorStatus, quota?.error || t('common.unknown_error') ); + const idleMessageKey = cardIdleMessageKey ?? `${i18nPrefix}.idle`; const getTypeLabel = (type: string): string => { const key = `auth_files.filter_${type}`; @@ -117,7 +120,7 @@ export function QuotaCard({ {quotaStatus === 'loading' ? (
{t(`${i18nPrefix}.loading`)}
) : quotaStatus === 'idle' ? ( -
{t(`${i18nPrefix}.idle`)}
+
{t(idleMessageKey)}
) : quotaStatus === 'error' ? (
{t(`${i18nPrefix}.load_failed`, { @@ -127,7 +130,7 @@ export function QuotaCard({ ) : quota ? ( renderQuotaItems(quota, t, { styles, QuotaProgressBar }) ) : ( -
{t(`${i18nPrefix}.idle`)}
+
{t(idleMessageKey)}
)}
diff --git a/src/components/quota/QuotaSection.tsx b/src/components/quota/QuotaSection.tsx index 91c6271..1f77de4 100644 --- a/src/components/quota/QuotaSection.tsx +++ b/src/components/quota/QuotaSection.tsx @@ -271,6 +271,7 @@ export function QuotaSection({ quota={quota[item.name]} resolvedTheme={resolvedTheme} i18nPrefix={config.i18nPrefix} + cardIdleMessageKey={config.cardIdleMessageKey} cardClassName={config.cardClassName} defaultType={config.type} renderQuotaItems={config.renderQuotaItems} diff --git a/src/components/quota/quotaConfigs.ts b/src/components/quota/quotaConfigs.ts index 039fdd9..1cd6b3c 100644 --- a/src/components/quota/quotaConfigs.ts +++ b/src/components/quota/quotaConfigs.ts @@ -84,6 +84,7 @@ export interface QuotaStore { export interface QuotaConfig { type: QuotaType; i18nPrefix: string; + cardIdleMessageKey?: string; filterFn: (file: AuthFileItem) => boolean; fetchQuota: (file: AuthFileItem, t: TFunction) => Promise; storeSelector: (state: QuotaStore) => Record; @@ -758,6 +759,7 @@ export const CLAUDE_CONFIG: QuotaConfig< > = { type: 'claude', i18nPrefix: 'claude_quota', + cardIdleMessageKey: 'quota_management.card_idle_hint', filterFn: (file) => isClaudeFile(file) && !isDisabledAuthFile(file), fetchQuota: fetchClaudeQuota, storeSelector: (state) => state.claudeQuota, @@ -784,6 +786,7 @@ export const CLAUDE_CONFIG: QuotaConfig< export const ANTIGRAVITY_CONFIG: QuotaConfig = { type: 'antigravity', i18nPrefix: 'antigravity_quota', + cardIdleMessageKey: 'quota_management.card_idle_hint', filterFn: (file) => isAntigravityFile(file) && !isDisabledAuthFile(file), fetchQuota: fetchAntigravityQuota, storeSelector: (state) => state.antigravityQuota, @@ -809,6 +812,7 @@ export const CODEX_CONFIG: QuotaConfig< > = { type: 'codex', i18nPrefix: 'codex_quota', + cardIdleMessageKey: 'quota_management.card_idle_hint', filterFn: (file) => isCodexFile(file) && !isDisabledAuthFile(file), fetchQuota: fetchCodexQuota, storeSelector: (state) => state.codexQuota, @@ -835,6 +839,7 @@ export const CODEX_CONFIG: QuotaConfig< export const GEMINI_CLI_CONFIG: QuotaConfig = { type: 'gemini-cli', i18nPrefix: 'gemini_cli_quota', + cardIdleMessageKey: 'quota_management.card_idle_hint', filterFn: (file) => isGeminiCliFile(file) && !isRuntimeOnlyAuthFile(file) && !isDisabledAuthFile(file), fetchQuota: fetchGeminiCliQuota, diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 6ff7a27..a73b389 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -1229,7 +1229,8 @@ "title": "Quota Management", "description": "Monitor OAuth quota status for Antigravity, Codex, and Gemini CLI credentials.", "refresh_files": "Refresh auth files", - "refresh_files_and_quota": "Refresh files & quota" + "refresh_files_and_quota": "Refresh files & quota", + "card_idle_hint": "Use the top \"Refresh files & quota\" button to fetch the latest quota data." }, "system_info": { "title": "Management Center Info", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 83b04cc..6831100 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -1234,7 +1234,8 @@ "title": "Управление квотами", "description": "Следите за статусом квот OAuth для учётных данных Antigravity, Codex и Gemini CLI.", "refresh_files": "Обновить файлы авторизации", - "refresh_files_and_quota": "Обновить файлы и квоты" + "refresh_files_and_quota": "Обновить файлы и квоты", + "card_idle_hint": "Используйте кнопку «Обновить файлы и квоты» сверху, чтобы загрузить актуальные данные по квотам." }, "system_info": { "title": "Информация о центре управления", diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json index 0638682..6a572ca 100644 --- a/src/i18n/locales/zh-CN.json +++ b/src/i18n/locales/zh-CN.json @@ -1229,7 +1229,8 @@ "title": "配额管理", "description": "集中查看 OAuth 额度与剩余情况", "refresh_files": "刷新认证文件", - "refresh_files_and_quota": "刷新认证文件&额度" + "refresh_files_and_quota": "刷新认证文件&额度", + "card_idle_hint": "请使用顶部“刷新认证文件&额度”按钮获取最新额度。" }, "system_info": { "title": "管理中心信息",