import { useHistory, useParams } from 'react-router'; import useProject from 'hooks/api/getters/useProject/useProject'; import useLoading from 'hooks/useLoading'; import ApiError from 'component/common/ApiError/ApiError'; import ConditionallyRender from 'component/common/ConditionallyRender'; import { useStyles } from './Project.styles'; import { Tab, Tabs } from '@material-ui/core'; import { Edit } from '@material-ui/icons'; import useToast from 'hooks/useToast'; import useQueryParams from 'hooks/useQueryParams'; import { useEffect } from 'react'; import useTabs from 'hooks/useTabs'; import TabPanel from 'component/common/TabNav/TabPanel'; import { ProjectAccess } from '../ProjectAccess/ProjectAccess'; import ProjectEnvironment from '../ProjectEnvironment/ProjectEnvironment'; import ProjectOverview from './ProjectOverview'; import ProjectHealth from './ProjectHealth/ProjectHealth'; import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton'; import { UPDATE_PROJECT } from 'component/providers/AccessProvider/permissions'; const Project = () => { const { id, activeTab } = useParams<{ id: string; activeTab: string }>(); const params = useQueryParams(); const { project, error, loading, refetch } = useProject(id); const ref = useLoading(loading); const { setToastData } = useToast(); const styles = useStyles(); const history = useHistory(); const { a11yProps, activeTabIdx, setActiveTab } = useTabs(0); const basePath = `/projects/${id}`; const tabData = [ { title: 'Overview', component: , path: basePath, name: 'overview', }, { title: 'Health', component: , path: `${basePath}/health`, name: 'health', }, { title: 'Access', component: , path: `${basePath}/access`, name: 'access', }, { title: 'Environments', component: , path: `${basePath}/environments`, name: 'environments', }, ]; useEffect(() => { const created = params.get('created'); const edited = params.get('edited'); if (created || edited) { const text = created ? 'Project created' : 'Project updated'; setToastData({ type: 'success', title: text, }); } // @ts-expect-error tabData.filter(tab => !tab.disabled); /* eslint-disable-next-line */ }, []); useEffect(() => { const tabIdx = tabData.findIndex(tab => tab.name === activeTab); if (tabIdx > 0) { setActiveTab(tabIdx); } else { setActiveTab(0); } /* eslint-disable-next-line */ }, []); const renderTabs = () => { return tabData.map((tab, index) => { return ( { setActiveTab(index); history.push(tab.path); }} className={styles.tabButton} /> ); }); }; const renderTabContent = () => { return tabData.map((tab, index) => { return ( {tab.component} ); }); }; return (

{project?.name}
history.push(`/projects/${id}/edit`)} data-loading >

} />
{ setActiveTab(tabId); }} indicatorColor="primary" textColor="primary" > {renderTabs()}
{renderTabContent()}
); }; export default Project;