42 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { Dispatch, useEffect } from "react";
 | |
| import { api } from "../API/API";
 | |
| 
 | |
| export interface ProjectMember {
 | |
|   Username: string;
 | |
|   UserRole: string;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Gets all members of a project
 | |
|  * @param string - The project's name
 | |
|  * @param Dispatch - A setStateAction for the array you want to put members in
 | |
|  * @returns {void} Nothing
 | |
|  * @example
 | |
|  * const [users, setUsers] = useState<User[]>([]);
 | |
|  * GetUsersInProject({ projectName: props.projectname, setUsersProp: setUsers });
 | |
|  */
 | |
| function GetUsersInProject(props: {
 | |
|   projectName: string;
 | |
|   setUsersProp: Dispatch<React.SetStateAction<ProjectMember[]>>;
 | |
| }): void {
 | |
|   const setUsers: Dispatch<React.SetStateAction<ProjectMember[]>> =
 | |
|     props.setUsersProp;
 | |
|   useEffect(() => {
 | |
|     const fetchUsers = async (): Promise<void> => {
 | |
|       try {
 | |
|         const token = localStorage.getItem("accessToken") ?? "";
 | |
|         const response = await api.getAllUsersProject(props.projectName, token);
 | |
|         if (response.success) {
 | |
|           setUsers(response.data ?? []);
 | |
|         } else {
 | |
|           console.error("Failed to fetch members:", response.message);
 | |
|         }
 | |
|       } catch (error) {
 | |
|         console.error("Error fetching members:", error);
 | |
|       }
 | |
|     };
 | |
|     void fetchUsers();
 | |
|   }, [props.projectName, setUsers]);
 | |
| }
 | |
| 
 | |
| export default GetUsersInProject;
 | 
