summaryrefslogtreecommitdiffhomepage
path: root/packages/core/src
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-05-21 13:24:26 +0900
committerAdam Malczewski <[email protected]>2026-05-21 13:24:26 +0900
commit772dcacccea48b1b814f9524a618564f2e909b2f (patch)
tree5ba3ea8a7045f12051a620e4ea3543b1ca9b2223 /packages/core/src
parent031f949b2eaccd6424d5e20fb5a1f1ffecfac0ba (diff)
downloaddispatch-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.ts11
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