import { useEffect, useState } from "react"; import styles from "./VolunteersPage.module.css"; import VolunteerCard from "./components/VolunteersCard/VolunteerCard"; import getAllUser from "../../utils/users/getAllUsers"; import ToolBar from "../../components/ToolBar/ToolBar"; import filter from "../../utils/filter"; import getUserById from "../../utils/users/getUserById"; import User from "./interfaces/user.interface"; import Loading from "../../components/ui/loading/loading"; interface Filters { alphabetical: "asc" | "desc"; yearOrder: "asc" | "desc"; } const VolunteerPage: React.FC = () => { const [filters, setFilters] = useState({ alphabetical: "asc", yearOrder: "desc", }); const [users, setUsers] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const fetchUsers = async (): Promise => { setLoading(true); 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 => { 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); } }; fetchUsers(); }, []); if(loading) return ; return (
{filter(users, filters, "user").map((user: User) => ( ))}
); }; export default VolunteerPage;