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");
|
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) {
|
} catch (error) {
|
||||||
toast({
|
toast({
|
||||||
title: "Erreur",
|
title: "Erreur",
|
||||||
@ -217,13 +236,17 @@ export function GroupsTable({ userRole = [] }: GroupsTableProps) {
|
|||||||
setSelectedGroup(group);
|
setSelectedGroup(group);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Fetch group members
|
|
||||||
const membersResponse = await fetch(`/api/groups/${groupId}/members`);
|
const membersResponse = await fetch(`/api/groups/${groupId}/members`);
|
||||||
if (!membersResponse.ok) throw new Error("Failed to fetch group members");
|
if (!membersResponse.ok) throw new Error("Failed to fetch group members");
|
||||||
const members = await membersResponse.json();
|
const members = await membersResponse.json();
|
||||||
setGroupMembers(members);
|
setGroupMembers(members);
|
||||||
|
|
||||||
// Fetch all users
|
setGroups(prev => prev.map(g =>
|
||||||
|
g.id === groupId
|
||||||
|
? { ...g, membersCount: members.length }
|
||||||
|
: g
|
||||||
|
));
|
||||||
|
|
||||||
const usersResponse = await fetch("/api/users");
|
const usersResponse = await fetch("/api/users");
|
||||||
if (!usersResponse.ok) throw new Error("Failed to fetch users");
|
if (!usersResponse.ok) throw new Error("Failed to fetch users");
|
||||||
const users = await usersResponse.json();
|
const users = await usersResponse.json();
|
||||||
@ -255,14 +278,12 @@ export function GroupsTable({ userRole = [] }: GroupsTableProps) {
|
|||||||
throw new Error("Failed to add member");
|
throw new Error("Failed to add member");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the members list
|
|
||||||
const updatedMember = availableUsers.find(u => u.id === userId);
|
const updatedMember = availableUsers.find(u => u.id === userId);
|
||||||
if (updatedMember) {
|
if (updatedMember) {
|
||||||
setGroupMembers(prev => [...prev, updatedMember]);
|
setGroupMembers(prev => [...prev, updatedMember]);
|
||||||
setAvailableUsers(prev => prev.filter(u => u.id !== userId));
|
setAvailableUsers(prev => prev.filter(u => u.id !== userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the group's member count in the table
|
|
||||||
setGroups(prev => prev.map(group =>
|
setGroups(prev => prev.map(group =>
|
||||||
group.id === selectedGroup.id
|
group.id === selectedGroup.id
|
||||||
? { ...group, membersCount: group.membersCount + 1 }
|
? { ...group, membersCount: group.membersCount + 1 }
|
||||||
@ -294,14 +315,12 @@ export function GroupsTable({ userRole = [] }: GroupsTableProps) {
|
|||||||
throw new Error("Failed to remove member");
|
throw new Error("Failed to remove member");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the members list
|
|
||||||
const removedMember = groupMembers.find(u => u.id === userId);
|
const removedMember = groupMembers.find(u => u.id === userId);
|
||||||
if (removedMember) {
|
if (removedMember) {
|
||||||
setGroupMembers(prev => prev.filter(u => u.id !== userId));
|
setGroupMembers(prev => prev.filter(u => u.id !== userId));
|
||||||
setAvailableUsers(prev => [...prev, removedMember]);
|
setAvailableUsers(prev => [...prev, removedMember]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the group's member count in the table
|
|
||||||
setGroups(prev => prev.map(group =>
|
setGroups(prev => prev.map(group =>
|
||||||
group.id === selectedGroup.id
|
group.id === selectedGroup.id
|
||||||
? { ...group, membersCount: Math.max(0, group.membersCount - 1) }
|
? { ...group, membersCount: Math.max(0, group.membersCount - 1) }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user