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:
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user