41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { Dispatch, useEffect } from "react";
|
|
import { api } from "../API/API";
|
|
|
|
export interface ProjectMember {
|
|
Username: string;
|
|
UserRole: string;
|
|
}
|
|
|
|
/**
|
|
* Gets all projects that user is a member of
|
|
* @param props - A setStateAction for the array you want to put projects in
|
|
* @returns {void} Nothing
|
|
* @example
|
|
* const [projects, setProjects] = useState<Project[]>([]);
|
|
* GetAllUsers({ setProjectsProp: setProjects });
|
|
*/
|
|
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 projects:", response.message);
|
|
}
|
|
} catch (error) {
|
|
console.error("Error fetching projects:", error);
|
|
}
|
|
};
|
|
void fetchUsers();
|
|
}, [props.projectName, setUsers]);
|
|
}
|
|
|
|
export default GetUsersInProject;
|