import { refreshAccessToken } from '@/lib/api/auth'; let inFlight: Promise | null = null; /** * 并发 401 时共享同一次 refresh,避免重复 POST /oauth/token。 * refresh 失败会清空 token(由调用方传入的 setTokens 执行)。 */ export function refreshTokensShared( getRefreshToken: () => string | null, setTokens: (access: string | null, refresh: string | null) => void ): Promise { if (inFlight) { return inFlight; } inFlight = (async () => { try { const rt = getRefreshToken(); if (!rt) { return false; } const pair = await refreshAccessToken(rt); setTokens(pair.accessToken, pair.refreshToken); return true; } catch { setTokens(null, null); return false; } finally { inFlight = null; } })(); return inFlight; }