Fixed DisplayUserProject component to fetch and display usernames
This commit is contained in:
		
							parent
							
								
									544383809b
								
							
						
					
					
						commit
						a6f3fc4a1c
					
				
					 1 changed files with 15 additions and 10 deletions
				
			
		|  | @ -3,17 +3,14 @@ import { Link, useParams } from "react-router-dom"; | ||||||
| import { api } from "../API/API"; | import { api } from "../API/API"; | ||||||
| import { WeeklyReport } from "../Types/goTypes"; | import { WeeklyReport } from "../Types/goTypes"; | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * Renders a component that displays the projects a user is a part of and links to the projects start-page. |  | ||||||
|  * @returns The JSX element representing the component. |  | ||||||
|  */ |  | ||||||
| function DisplayUserProject(): JSX.Element { | function DisplayUserProject(): JSX.Element { | ||||||
|   const { projectName } = useParams(); |   const { projectName } = useParams(); | ||||||
|   const [unsignedReports, setUnsignedReports] = useState<WeeklyReport[]>([]); |   const [unsignedReports, setUnsignedReports] = useState<WeeklyReport[]>([]); | ||||||
|   //const navigate = useNavigate();
 |   const [usernames, setUsernames] = useState<string[]>([]); | ||||||
|  |   const token = localStorage.getItem("accessToken") ?? ""; | ||||||
|  | 
 | ||||||
|   useEffect(() => { |   useEffect(() => { | ||||||
|     const getUnsignedReports = async (): Promise<void> => { |     const getUnsignedReports = async (): Promise<void> => { | ||||||
|       const token = localStorage.getItem("accessToken") ?? ""; |  | ||||||
|       const response = await api.getUnsignedReportsInProject( |       const response = await api.getUnsignedReportsInProject( | ||||||
|         projectName ?? "", |         projectName ?? "", | ||||||
|         token, |         token, | ||||||
|  | @ -21,13 +18,21 @@ function DisplayUserProject(): JSX.Element { | ||||||
|       console.log(response); |       console.log(response); | ||||||
|       if (response.success) { |       if (response.success) { | ||||||
|         setUnsignedReports(response.data ?? []); |         setUnsignedReports(response.data ?? []); | ||||||
|  |         const usernamesPromises = (response.data ?? []).map((report) => | ||||||
|  |           api.getUsername(report.userId, token), | ||||||
|  |         ); | ||||||
|  |         const usernamesResponses = await Promise.all(usernamesPromises); | ||||||
|  |         const usernames = usernamesResponses.map( | ||||||
|  |           (res) => (res.data as { username?: string }).username ?? "", | ||||||
|  |         ); | ||||||
|  |         setUsernames(usernames); | ||||||
|       } else { |       } else { | ||||||
|         console.error(response.message); |         console.error(response.message); | ||||||
|       } |       } | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     void getUnsignedReports(); |     void getUnsignedReports(); | ||||||
|   }, [projectName]); // Include 'projectName' in the dependency array
 |   }, [projectName, token]); | ||||||
| 
 | 
 | ||||||
|   return ( |   return ( | ||||||
|     <> |     <> | ||||||
|  | @ -39,8 +44,8 @@ function DisplayUserProject(): JSX.Element { | ||||||
|           <h1 key={index} className="border-b-2 border-black w-full"> |           <h1 key={index} className="border-b-2 border-black w-full"> | ||||||
|             <div className="flex justify-between"> |             <div className="flex justify-between"> | ||||||
|               <div className="flex"> |               <div className="flex"> | ||||||
|                 <span className="ml-6 mr-2 font-bold">UserID:</span> |                 <span className="ml-6 mr-2 font-bold">Username:</span> | ||||||
|                 <h1>{unsignedReport.userId}</h1> |                 <h1>{usernames[index]}</h1>{" "} | ||||||
|                 <span className="ml-6 mr-2 font-bold">Week:</span> |                 <span className="ml-6 mr-2 font-bold">Week:</span> | ||||||
|                 <h1>{unsignedReport.week}</h1> |                 <h1>{unsignedReport.week}</h1> | ||||||
|                 <span className="ml-6 mr-2 font-bold">Total Time:</span> |                 <span className="ml-6 mr-2 font-bold">Total Time:</span> | ||||||
|  | @ -58,7 +63,7 @@ function DisplayUserProject(): JSX.Element { | ||||||
|               <div className="flex"> |               <div className="flex"> | ||||||
|                 <div className="ml-auto flex space-x-4"> |                 <div className="ml-auto flex space-x-4"> | ||||||
|                   <Link |                   <Link | ||||||
|                     to={`/PMViewUnsignedReport/${projectName}/${unsignedReport.userId}/${unsignedReport.week}`} |                     to={`/PMViewUnsignedReport/${projectName}/${usernames[index]}/${unsignedReport.week}`} | ||||||
|                   > |                   > | ||||||
|                     <h1 className="underline cursor-pointer font-bold"> |                     <h1 className="underline cursor-pointer font-bold"> | ||||||
|                       View Report |                       View Report | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Davenludd
						Davenludd