From e1308f761302d586c88f1815e7a6caac6978832d Mon Sep 17 00:00:00 2001 From: Youssef Date: Thu, 24 Feb 2022 15:51:50 +0100 Subject: [PATCH] refactor: update remove project function --- frontend/src/component/menu/routes.js | 2 +- .../project/ProjectCard/ProjectCard.tsx | 62 +++++++++---------- .../project/ProjectList/ProjectList.tsx | 6 +- 3 files changed, 32 insertions(+), 38 deletions(-) diff --git a/frontend/src/component/menu/routes.js b/frontend/src/component/menu/routes.js index 91554f5520..58bf70d29a 100644 --- a/frontend/src/component/menu/routes.js +++ b/frontend/src/component/menu/routes.js @@ -15,7 +15,7 @@ import { P, C, E, EEA, RE } from '../common/flags'; import { NewUser } from '../user/NewUser/NewUser'; import ResetPassword from '../user/ResetPassword/ResetPassword'; import ForgottenPassword from '../user/ForgottenPassword/ForgottenPassword'; -import ProjectListNew from '../project/ProjectList/ProjectList'; +import { ProjectListNew } from '../project/ProjectList/ProjectList'; import Project from '../project/Project/Project'; import RedirectArchive from '../archive/RedirectArchive'; import EnvironmentList from '../environments/EnvironmentList/EnvironmentList'; diff --git a/frontend/src/component/project/ProjectCard/ProjectCard.tsx b/frontend/src/component/project/ProjectCard/ProjectCard.tsx index 6b4c71f7c2..43272e5776 100644 --- a/frontend/src/component/project/ProjectCard/ProjectCard.tsx +++ b/frontend/src/component/project/ProjectCard/ProjectCard.tsx @@ -1,18 +1,19 @@ import { Card, Menu, MenuItem } from '@material-ui/core'; import { useStyles } from './ProjectCard.styles'; import MoreVertIcon from '@material-ui/icons/MoreVert'; - import { ReactComponent as ProjectIcon } from '../../../assets/icons/projectIcon.svg'; import { useState } from 'react'; import { useHistory } from 'react-router-dom'; -import Dialogue from '../../common/Dialogue'; -import useProjectApi from '../../../hooks/api/actions/useProjectApi/useProjectApi'; -import useProjects from '../../../hooks/api/getters/useProjects/useProjects'; +import Dialogue from 'component/common/Dialogue'; +import useProjectApi from 'hooks/api/actions/useProjectApi/useProjectApi'; +import useProjects from 'hooks/api/getters/useProjects/useProjects'; import { Delete, Edit } from '@material-ui/icons'; -import { getProjectEditPath } from '../../../utils/route-path-helpers'; -import PermissionIconButton from '../../common/PermissionIconButton/PermissionIconButton'; -import useToast from '../../../hooks/useToast'; -import { UPDATE_PROJECT } from '../../providers/AccessProvider/permissions'; +import { getProjectEditPath } from 'utils/route-path-helpers'; +import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton'; +import useToast from 'hooks/useToast'; +import { UPDATE_PROJECT } from 'component/providers/AccessProvider/permissions'; +import { formatUnknownError } from 'utils/format-unknown-error'; + interface IProjectCardProps { name: string; featureCount: number; @@ -22,7 +23,7 @@ interface IProjectCardProps { onHover: () => void; } -const ProjectCard = ({ +export const ProjectCard = ({ name, featureCount, health, @@ -43,6 +44,23 @@ const ProjectCard = ({ setAnchorEl(e.currentTarget); }; + const onRemoveProject = async (e: Event) => { + e.preventDefault(); + try { + await deleteProject(id); + refetchProjectOverview(); + setToastData({ + title: 'Deleted project', + type: 'success', + text: 'Successfully deleted project', + }); + } catch (e: unknown) { + setToastApiError(formatUnknownError(e)); + } + setShowDelDialog(false); + setAnchorEl(null); + }; + return (
@@ -71,7 +89,6 @@ const ProjectCard = ({ { e.preventDefault(); - history.push(getProjectEditPath(id)); }} > @@ -115,27 +132,8 @@ const ProjectCard = ({
{ - e.preventDefault(); - deleteProject(id) - .then(() => { - setToastData({ - title: 'Deleted project', - type: 'success', - text: 'Successfully deleted project', - }); - refetchProjectOverview(); - }) - .catch(e => { - setToastApiError(e.message); - }) - .finally(() => { - setShowDelDialog(false); - setAnchorEl(null); - }); - }} - onClose={e => { - e.preventDefault(); + onClick={onRemoveProject} + onClose={() => { setAnchorEl(null); setShowDelDialog(false); }} @@ -144,5 +142,3 @@ const ProjectCard = ({
); }; - -export default ProjectCard; diff --git a/frontend/src/component/project/ProjectList/ProjectList.tsx b/frontend/src/component/project/ProjectList/ProjectList.tsx index 98be2717f0..e687665bf2 100644 --- a/frontend/src/component/project/ProjectList/ProjectList.tsx +++ b/frontend/src/component/project/ProjectList/ProjectList.tsx @@ -4,7 +4,7 @@ import { mutate } from 'swr'; import { getProjectFetcher } from '../../../hooks/api/getters/useProject/getProjectFetcher'; import useProjects from '../../../hooks/api/getters/useProjects/useProjects'; import ConditionallyRender from '../../common/ConditionallyRender'; -import ProjectCard from '../ProjectCard/ProjectCard'; +import { ProjectCard } from '../ProjectCard/ProjectCard'; import { useStyles } from './ProjectList.styles'; import { IProjectCard } from '../../../interfaces/project'; @@ -43,7 +43,7 @@ function resolveCreateButtonData(isOss: boolean, hasAccess: boolean) { } } -const ProjectListNew = () => { +export const ProjectListNew = () => { const { hasAccess } = useContext(AccessContext); const history = useHistory(); const styles = useStyles(); @@ -157,5 +157,3 @@ const ProjectListNew = () => { ); }; - -export default ProjectListNew;