diff --git a/services/frontend/src/components/Project/index.tsx b/services/frontend/src/components/Project/index.tsx new file mode 100644 index 0000000..cef0146 --- /dev/null +++ b/services/frontend/src/components/Project/index.tsx @@ -0,0 +1,72 @@ +import { useParams } from "react-router-dom"; +import Spinner from "../global/Spinner"; +import { useProject } from "../../hooks/useProject"; +import KubernetesProject from "./kubernetes"; +import DockerComposeProject from "./docker-compose"; +import { useTitle } from "../../hooks"; + +interface IProjectProps { + isAuthenticated: boolean; +} + +const Project = (props: IProjectProps) => { + const { isAuthenticated } = props; + const { uuid } = useParams<{ uuid: string }>(); + const { data, error, isFetching } = useProject(uuid); + + useTitle( + [ + isFetching ? "" : data ? data.name : "New project", + "Container Toolkit" + ].join(" | ") + ); + + if (!isFetching && !error) { + if (data.project_type === 0) { + return ( + + ); + } + + if (data.project_type === 1) { + return ( + + ); + } + } + + if (error) { + return ( +
+

+ {(error as any)?.response.status === 404 ? <>404 : <>Oops...} +

+

+ Either this project does not exist, it is private or the link is + wrong. +

+
+ ); + } + + return ( + <> + {isFetching && ( +
+ +
+ )} + + ); +}; + +export default Project; diff --git a/services/frontend/src/components/Projects/PreviewBlock.tsx b/services/frontend/src/components/Projects/PreviewBlock.tsx index 1458e1c..9840361 100644 --- a/services/frontend/src/components/Projects/PreviewBlock.tsx +++ b/services/frontend/src/components/Projects/PreviewBlock.tsx @@ -25,14 +25,8 @@ const PreviewBlock = (props: IPreviewBlockProps) => { setIsHovering(false); }; - const handleClick = (e: any) => { - if (project.project_type === 0) { - navigate(`/projects/docker-compose/${project.uuid}`); - } - - if (project.project_type === 1) { - navigate(`/projects/kubernetes/${project.uuid}`); - } + const handleClick = () => { + navigate(`/projects/${project.uuid}`); }; const onDelete = (e: any) => {