update api users and groups and users 16

This commit is contained in:
Alma 2025-04-09 22:08:43 +02:00
parent a7c9651690
commit 8772c3f9fa

View File

@ -80,7 +80,26 @@ export function GroupsTable({ userRole = [] }: GroupsTableProps) {
throw new Error(data.message || "Erreur lors de la récupération des groupes");
}
setGroups(Array.isArray(data) ? data : []);
const groupsWithCounts = await Promise.all(
(Array.isArray(data) ? data : []).map(async (group) => {
try {
const membersResponse = await fetch(`/api/groups/${group.id}/members`);
if (membersResponse.ok) {
const members = await membersResponse.json();
return {
...group,
membersCount: Array.isArray(members) ? members.length : 0
};
}
return group;
} catch (error) {
console.error(`Error fetching members for group ${group.id}:`, error);
return group;
}
})
);
setGroups(groupsWithCounts);
} catch (error) {
toast({
title: "Erreur",
@ -217,13 +236,17 @@ export function GroupsTable({ userRole = [] }: GroupsTableProps) {
setSelectedGroup(group);
try {
// Fetch group members
const membersResponse = await fetch(`/api/groups/${groupId}/members`);
if (!membersResponse.ok) throw new Error("Failed to fetch group members");
const members = await membersResponse.json();
setGroupMembers(members);
// Fetch all users
setGroups(prev => prev.map(g =>
g.id === groupId
? { ...g, membersCount: members.length }
: g
));
const usersResponse = await fetch("/api/users");
if (!usersResponse.ok) throw new Error("Failed to fetch users");
const users = await usersResponse.json();
@ -255,14 +278,12 @@ export function GroupsTable({ userRole = [] }: GroupsTableProps) {
throw new Error("Failed to add member");
}
// Update the members list
const updatedMember = availableUsers.find(u => u.id === userId);
if (updatedMember) {
setGroupMembers(prev => [...prev, updatedMember]);
setAvailableUsers(prev => prev.filter(u => u.id !== userId));
}
// Update the group's member count in the table
setGroups(prev => prev.map(group =>
group.id === selectedGroup.id
? { ...group, membersCount: group.membersCount + 1 }
@ -294,14 +315,12 @@ export function GroupsTable({ userRole = [] }: GroupsTableProps) {
throw new Error("Failed to remove member");
}
// Update the members list
const removedMember = groupMembers.find(u => u.id === userId);
if (removedMember) {
setGroupMembers(prev => prev.filter(u => u.id !== userId));
setAvailableUsers(prev => [...prev, removedMember]);
}
// Update the group's member count in the table
setGroups(prev => prev.map(group =>
group.id === selectedGroup.id
? { ...group, membersCount: Math.max(0, group.membersCount - 1) }