diff options
| author | Adam Malczewski <[email protected]> | 2026-05-21 13:24:26 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-05-21 13:24:26 +0900 |
| commit | 772dcacccea48b1b814f9524a618564f2e909b2f (patch) | |
| tree | 5ba3ea8a7045f12051a620e4ea3543b1ca9b2223 /packages/core/src | |
| parent | 031f949b2eaccd6424d5e20fb5a1f1ffecfac0ba (diff) | |
| download | dispatch-772dcacccea48b1b814f9524a618564f2e909b2f.tar.gz dispatch-772dcacccea48b1b814f9524a618564f2e909b2f.zip | |
feat: cache Claude usage — return last successful result on fetch failure
Diffstat (limited to 'packages/core/src')
| -rw-r--r-- | packages/core/src/credentials/claude.ts | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/packages/core/src/credentials/claude.ts b/packages/core/src/credentials/claude.ts index cc6daec..e4cc1f9 100644 --- a/packages/core/src/credentials/claude.ts +++ b/packages/core/src/credentials/claude.ts @@ -462,8 +462,15 @@ async function fetchClaudeUsage(accessToken: string): Promise<ClaudeUsageReport } } +const usageCacheMap = new Map<string, ClaudeUsageReport>(); + export async function getAccountUsage(account: ClaudeAccount): Promise<ClaudeUsageReport | null> { const creds = await refreshAccountCredentialsAsync(account); - if (!creds) return null; - return fetchClaudeUsage(creds.accessToken); + if (!creds) return usageCacheMap.get(account.id) ?? null; + const report = await fetchClaudeUsage(creds.accessToken); + if (report) { + usageCacheMap.set(account.id, report); + return report; + } + return usageCacheMap.get(account.id) ?? null; }
\ No newline at end of file |
