Add loading

This commit is contained in:
T'JAMPENS QUENTIN p2406187
2026-02-10 15:22:38 +01:00
parent 8441b9f3b2
commit d2e969c915
2 changed files with 45 additions and 22 deletions
@@ -141,6 +141,14 @@
}
}
.loading {
width: 100%;
text-align: center;
font-size: 1.1rem;
opacity: 1;
color: white;
}
@media screen and (min-width: 1024px) {
.container {
padding: 20px;
+37 -22
View File
@@ -19,35 +19,45 @@ const VolunteerPage: React.FC = () => {
});
const [users, setUsers] = useState<User[]>([]);
const [loading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchUsers = async (): Promise<void> => {
const result = await getAllUser();
setLoading(true);
if (result.status !== 200 || !Array.isArray(result.data)) {
console.error("Erreur lors du chargement des utilisateurs", result);
return;
try {
const result = await getAllUser();
if (result.status !== 200 || !Array.isArray(result.data)) {
console.error("Erreur lors du chargement des utilisateurs", result);
return;
}
const usersData = await Promise.all(
result.data.map(async (id: number): Promise<User | null> => {
const res = await getUserById(id);
if (res.status === 200) {
return res.data as User;
}
console.warn(`Utilisateur ${id} non récupéré`, res.status);
return null;
})
);
setUsers(usersData.filter((user): user is User => user !== null));
} catch (error) {
console.error("Erreur réseau", error);
} finally {
setLoading(false);
}
const usersData = await Promise.all(
result.data.map(async (id: number): Promise<User | null> => {
const res = await getUserById(id);
if (res.status === 200) {
return res.data as User;
}
console.warn(`Utilisateur ${id} non récupéré`, res.status);
return null;
})
);
setUsers(usersData.filter((user: any): user is User => user !== null));
};
fetchUsers();
}, []);
return (
<div className={styles.container}>
<ToolBar
@@ -57,10 +67,15 @@ const VolunteerPage: React.FC = () => {
/>
<div className={styles.usersList}>
{filter(users, filters, "user").map((user: User) => (
<VolunteerCard key={user.id} user={user} />
))}
{loading ? (
<div className={styles.loading}>Chargement des bénévoles</div>
) : (
filter(users, filters, "user").map((user: User) => (
<VolunteerCard key={user.id} user={user} />
))
)}
</div>
</div>
);
};