feat: add team members functionality and modal

- Introduced `onViewMembers` prop in `TreeItemRow` to handle viewing team members.
- Added `TeamMembersModal` to display members of a selected team.
- Implemented state management for team members in `TeamsManagement`, including fetching and updating stats.
- Enhanced `AdminManagementService` with methods to fetch and remove team members.
This commit is contained in:
Julien Froidefond
2025-08-22 09:28:52 +02:00
parent 7ad970c73c
commit c0e2b9533b
5 changed files with 445 additions and 4 deletions

View File

@@ -15,6 +15,14 @@ export interface Team {
memberCount: number;
}
export interface TeamMember {
id: string;
firstName: string;
lastName: string;
fullName: string;
joinedAt: string;
}
export class AdminManagementService {
private static baseUrl = "/api/admin";
@@ -143,4 +151,31 @@ export class AdminManagementService {
throw new Error(error.error || "Failed to delete direction");
}
}
// Team Members
static async getTeamMembers(teamId: string): Promise<TeamMember[]> {
const response = await fetch(`${this.baseUrl}/teams/${teamId}/members`);
if (!response.ok) {
throw new Error("Failed to fetch team members");
}
return response.json();
}
static async removeTeamMember(
teamId: string,
memberId: string
): Promise<void> {
const response = await fetch(`${this.baseUrl}/teams/${teamId}/members`, {
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ memberId }),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || "Failed to remove team member");
}
}
}