DEV: Ensure only one csrftoken request is running simultaneously (#31390)

Before this, triggering two ajax requests close together would 'race' to
create a csrf-token, and only one would succeed
This commit is contained in:
David Taylor
2025-02-19 17:43:55 +00:00
committed by GitHub
parent 8be39c5bf0
commit f0d231355e

View File

@ -45,10 +45,16 @@ function handleRedirect(xhr) {
}
}
let activeCsrfRequest;
export function updateCsrfToken() {
return ajax("/session/csrf").then((result) => {
Session.currentProp("csrfToken", result.csrf);
});
if (!activeCsrfRequest) {
activeCsrfRequest = ajax("/session/csrf")
.then((result) => Session.currentProp("csrfToken", result.csrf))
.finally(() => (activeCsrfRequest = null));
}
return activeCsrfRequest;
}
/**