feat: Paralléliser les appels API de la page devoirs
Some checks failed
CI / Naming Conventions (push) Has been cancelled
CI / Build Check (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Frontend Tests (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled

La page devoirs enchaînait séquentiellement les appels classes, subjects,
assignments et homework, produisant un waterfall de ~2.5s. En les lançant
dans un seul Promise.all, le temps de chargement correspond désormais au
plus lent des appels (~600ms) au lieu de leur somme.

Pour résoudre la dépendance de assignments sur le userId (nécessaire dans
l'URL), un nouveau helper getAuthenticatedUserId() encapsule le mécanisme
de token refresh côté module auth, évitant aux pages d'importer
refreshToken directement.

Chaque branche side-effect (loadAssignments, loadHomeworks) gère ses
erreurs via .catch() local pour éviter l'état partiel si l'une échoue
pendant que les autres réussissent.
This commit is contained in:
2026-03-16 22:36:50 +01:00
parent 68179a929f
commit a708af3a8f
4 changed files with 124 additions and 30 deletions

View File

@@ -354,6 +354,18 @@ export function getCurrentUserId(): string | null {
return currentUserId;
}
/**
* Retourne l'ID utilisateur après avoir garanti que le token est rafraîchi.
* Encapsule le mécanisme de refresh pour que les appelants n'aient pas
* à manipuler refreshToken() directement.
*/
export async function getAuthenticatedUserId(): Promise<string | null> {
if (!currentUserId) {
await refreshToken();
}
return currentUserId;
}
/**
* Register a callback to be called on logout.
* Used to clear user-specific caches (e.g., sessions query cache).

View File

@@ -5,6 +5,7 @@ export {
authenticatedFetch,
isAuthenticated,
getAccessToken,
getAuthenticatedUserId,
getJwtRoles,
getCurrentUserId,
type LoginCredentials,