feat: Paralléliser les appels API de la page devoirs
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:
@@ -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).
|
||||
|
||||
@@ -5,6 +5,7 @@ export {
|
||||
authenticatedFetch,
|
||||
isAuthenticated,
|
||||
getAccessToken,
|
||||
getAuthenticatedUserId,
|
||||
getJwtRoles,
|
||||
getCurrentUserId,
|
||||
type LoginCredentials,
|
||||
|
||||
Reference in New Issue
Block a user