Add project navigation based on user and pm role
This commit is contained in:
		
							parent
							
								
									14133a9f22
								
							
						
					
					
						commit
						ae0208ff23
					
				
					 1 changed files with 28 additions and 4 deletions
				
			
		|  | @ -1,6 +1,6 @@ | ||||||
| import { useState, useEffect } from "react"; | import { useState, useEffect } from "react"; | ||||||
| import { Project } from "../Types/goTypes"; | import { Project } from "../Types/goTypes"; | ||||||
| import { Link } from "react-router-dom"; | import { Link, useNavigate } from "react-router-dom"; | ||||||
| import { api } from "../API/API"; | import { api } from "../API/API"; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | @ -9,6 +9,7 @@ import { api } from "../API/API"; | ||||||
|  */ |  */ | ||||||
| function DisplayUserProject(): JSX.Element { | function DisplayUserProject(): JSX.Element { | ||||||
|   const [projects, setProjects] = useState<Project[]>([]); |   const [projects, setProjects] = useState<Project[]>([]); | ||||||
|  |   const navigate = useNavigate(); | ||||||
| 
 | 
 | ||||||
|   const getProjects = async (): Promise<void> => { |   const getProjects = async (): Promise<void> => { | ||||||
|     const token = localStorage.getItem("accessToken") ?? ""; |     const token = localStorage.getItem("accessToken") ?? ""; | ||||||
|  | @ -21,6 +22,26 @@ function DisplayUserProject(): JSX.Element { | ||||||
|     } |     } | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   const handleProjectClick = async (projectName: string): Promise<void> => { | ||||||
|  |     const username = localStorage.getItem("username") ?? ""; | ||||||
|  |     const token = localStorage.getItem("accessToken") ?? ""; | ||||||
|  |     const response = await api.checkIfProjectManager( | ||||||
|  |       username, | ||||||
|  |       projectName, | ||||||
|  |       token, | ||||||
|  |     ); | ||||||
|  |     if (response.success) { | ||||||
|  |       if (response.data) { | ||||||
|  |         navigate(`/PMProjectPage/${projectName}`); | ||||||
|  |       } else { | ||||||
|  |         navigate(`/project/${projectName}`); | ||||||
|  |       } | ||||||
|  |     } else { | ||||||
|  |       // handle error
 | ||||||
|  |       console.error(response.message); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   // Call getProjects when the component mounts
 |   // Call getProjects when the component mounts
 | ||||||
|   useEffect(() => { |   useEffect(() => { | ||||||
|     void getProjects(); |     void getProjects(); | ||||||
|  | @ -30,12 +51,15 @@ function DisplayUserProject(): JSX.Element { | ||||||
|     <> |     <> | ||||||
|       <h1 className="font-bold text-[30px] mb-[20px]">Your Projects</h1> |       <h1 className="font-bold text-[30px] mb-[20px]">Your Projects</h1> | ||||||
|       <div className="border-4 border-black bg-white flex flex-col items-center justify-center min-h-[65vh] h-fit w-[50vw] rounded-3xl content-center overflow-scroll space-y-[10vh] p-[30px]"> |       <div className="border-4 border-black bg-white flex flex-col items-center justify-center min-h-[65vh] h-fit w-[50vw] rounded-3xl content-center overflow-scroll space-y-[10vh] p-[30px]"> | ||||||
|         {projects.map((project, index) => ( |         {projects.map((project) => ( | ||||||
|           <Link to={`/project/${project.name}`} key={index}> |           <div | ||||||
|  |             onClick={() => void handleProjectClick(project.name)} | ||||||
|  |             key={project.id} | ||||||
|  |           > | ||||||
|             <h1 className="font-bold underline text-[30px] cursor-pointer"> |             <h1 className="font-bold underline text-[30px] cursor-pointer"> | ||||||
|               {project.name} |               {project.name} | ||||||
|             </h1> |             </h1> | ||||||
|           </Link> |           </div> | ||||||
|         ))} |         ))} | ||||||
|       </div> |       </div> | ||||||
|     </> |     </> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Davenludd
						Davenludd