mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-04-06 13:31:43 +02:00
Affiner sync projets + publication skills Claude/Codex
This commit is contained in:
@@ -193,6 +193,67 @@ Sans ce check, les erreurs 404/500 passent silencieusement si le service appelan
|
||||
|
||||
---
|
||||
|
||||
2026-03-28 — app-alexandrie
|
||||
|
||||
FILE_UPDATE_PROPOSAL
|
||||
Fichier cible : knowledge/frontend/risques/state.md
|
||||
|
||||
Pourquoi :
|
||||
Anti-pattern découvert en review 5.3 : `followIsLoading: boolean` global dans un store Zustand bloquait tous les boutons "Suivre" de l'annuaire simultanément. Un seul flag booléen ne peut pas représenter des états par entité.
|
||||
|
||||
Proposition :
|
||||
|
||||
## État de chargement par entité dans les stores Zustand — préférer un Set<string>
|
||||
|
||||
Quand plusieurs instances d'un même composant peuvent déclencher une action async en parallèle (ex: bouton "Suivre" sur chaque carte d'une liste), un flag booléen global `isLoading: boolean` est insuffisant — il désactive toutes les instances dès qu'une action est en cours.
|
||||
|
||||
Pattern correct :
|
||||
|
||||
```typescript
|
||||
// État
|
||||
followingInProgress: Set<string>; // userId actuellement en cours de follow/unfollow
|
||||
|
||||
// Selector
|
||||
isFollowInProgress: (userId: string) => boolean;
|
||||
// dans le store : (userId) => get().followingInProgress.has(userId)
|
||||
|
||||
// Mutation
|
||||
set((state) => {
|
||||
const next = new Set(state.followingInProgress);
|
||||
next.add(targetUserId);
|
||||
return { followingInProgress: next };
|
||||
});
|
||||
// Après succès/erreur : next.delete(targetUserId)
|
||||
```
|
||||
|
||||
Appliquer ce pattern pour toute action async dans une liste (like, bookmark, follow, reaction, etc.).
|
||||
|
||||
---
|
||||
|
||||
2026-03-28 — app-alexandrie
|
||||
|
||||
FILE_UPDATE_PROPOSAL
|
||||
Fichier cible : knowledge/frontend/risques/state.md
|
||||
|
||||
Pourquoi :
|
||||
Review 5.3 : `followError` partagé entre les actions follow/unfollow et les erreurs de chargement des listes followers/followings. Un ancien `followError` de type "ALREADY_FOLLOWING" pouvait s'afficher comme "Erreur de chargement" dans l'écran followers.
|
||||
|
||||
Proposition :
|
||||
|
||||
## Séparer les erreurs d'action et les erreurs de liste dans les stores Zustand
|
||||
|
||||
Quand un store gère à la fois des actions (mutations) et des listes (fetches paginés), ne pas partager la même clé d'erreur. Nommer explicitement :
|
||||
|
||||
```typescript
|
||||
followError: string | null; // erreur de followUser/unfollowUser
|
||||
followersError: string | null; // erreur de fetchFollowers/loadMoreFollowers
|
||||
followingsError: string | null; // erreur de fetchFollowings/loadMoreFollowings
|
||||
```
|
||||
|
||||
Les écrans de liste doivent afficher leur propre erreur (`followersError`) et non l'erreur d'action globale (`followError`).
|
||||
|
||||
---
|
||||
|
||||
# Format attendu
|
||||
|
||||
Chaque proposition doit suivre ce format :
|
||||
|
||||
Reference in New Issue
Block a user