fix(auth): centralize session refresh retry

This commit is contained in:
Anish Sarkar 2026-06-26 22:03:59 +05:30
parent ef9b5b42a8
commit 9fc93e5e82

View file

@ -188,9 +188,23 @@ async function doRefreshSession(): Promise<boolean> {
}
}
let refreshPromise: Promise<boolean> | null = null;
export async function refreshSession(): Promise<boolean> {
if (typeof navigator !== "undefined" && "locks" in navigator) {
return navigator.locks.request("ss-token-refresh", () => doRefreshSession());
if (refreshPromise) {
return refreshPromise;
}
refreshPromise = (async () => {
if (typeof navigator !== "undefined" && "locks" in navigator) {
return navigator.locks.request("ss-token-refresh", () => doRefreshSession());
}
return doRefreshSession();
})();
try {
return await refreshPromise;
} finally {
refreshPromise = null;
}
return doRefreshSession();
}