import { Dispatch, SetStateAction, useEffect } from "react"; import { api } from "../API/API"; /** * Interface for reported time per category + total time reported */ export interface projectTimes { admin: number; development: number; meeting: number; own_work: number; study: number; testing: number; totalTime?: number; } /** * Gets all reported times for this project * @param {Dispatch} props.setTimesProp - A setStateAction for the map you want to put times in * @param {string} props.projectName - Username * @returns {void} Nothing * @example * const projectName = "Example"; * const [times, setTimes] = useState(); * GetProjectTimes({ setTimesProp: setTimes, projectName: projectName }); */ function GetProjectTimes(props: { setTimesProp: Dispatch>; projectName: string; }): void { const setTimes: Dispatch> = props.setTimesProp; useEffect(() => { const fetchUsers = async (): Promise => { try { const token = localStorage.getItem("accessToken") ?? ""; const response = await api.getProjectTimes(props.projectName, token); if (response.success && response.data) { // Calculates total time reported response.data.totalTime = response.data.admin; response.data.totalTime += response.data.development; response.data.totalTime += response.data.meeting; response.data.totalTime += response.data.own_work; response.data.totalTime += response.data.study; response.data.totalTime += response.data.testing; setTimes(response.data); } else { console.error("Failed to fetch project times:", response.message); } } catch (error) { console.error("Error fetching times:", error); } }; void fetchUsers(); }, [props.projectName, setTimes]); } export default GetProjectTimes;