update api users and groups and users 16
This commit is contained in:
parent
a7c9651690
commit
8772c3f9fa
@ -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) }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user