Add API call optimization in EventsPageSection: Introduce a ref to prevent multiple API calls for event registrations, ensuring efficient data fetching. Update effect dependencies for improved performance and maintainability.
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
This commit is contained in:
@@ -115,6 +115,8 @@ export default function EventsPageSection({
|
|||||||
|
|
||||||
// Ref pour tracker si on a déjà utilisé les données initiales
|
// Ref pour tracker si on a déjà utilisé les données initiales
|
||||||
const hasUsedInitialData = useRef(hasInitialData);
|
const hasUsedInitialData = useRef(hasInitialData);
|
||||||
|
// Ref pour tracker si on a déjà fait les appels API
|
||||||
|
const hasFetchedRegistrations = useRef(false);
|
||||||
|
|
||||||
// Séparer et trier les événements (du plus récent au plus ancien)
|
// Séparer et trier les événements (du plus récent au plus ancien)
|
||||||
// Le statut est calculé automatiquement en fonction de la date
|
// Le statut est calculé automatiquement en fonction de la date
|
||||||
@@ -179,11 +181,24 @@ export default function EventsPageSection({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Si on a déjà fait les appels API, ne pas refaire
|
||||||
|
if (hasFetchedRegistrations.current) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Si pas de session, ne rien faire (on garde les données vides)
|
// Si pas de session, ne rien faire (on garde les données vides)
|
||||||
if (!session?.user?.id) {
|
if (!session?.user?.id) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Si pas d'événements, ne rien faire
|
||||||
|
if (events.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Marquer qu'on va faire les appels
|
||||||
|
hasFetchedRegistrations.current = true;
|
||||||
|
|
||||||
// Charger les inscriptions depuis l'API seulement si on n'a pas de données initiales
|
// Charger les inscriptions depuis l'API seulement si on n'a pas de données initiales
|
||||||
// On charge pour tous les événements (passés et à venir) pour permettre le feedback
|
// On charge pour tous les événements (passés et à venir) pour permettre le feedback
|
||||||
const checkRegistrations = async () => {
|
const checkRegistrations = async () => {
|
||||||
@@ -206,7 +221,8 @@ export default function EventsPageSection({
|
|||||||
};
|
};
|
||||||
|
|
||||||
checkRegistrations();
|
checkRegistrations();
|
||||||
}, [session?.user?.id, events]);
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [session?.user?.id]);
|
||||||
|
|
||||||
// Fonctions pour le calendrier
|
// Fonctions pour le calendrier
|
||||||
const getDaysInMonth = (date: Date) => {
|
const getDaysInMonth = (date: Date) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user