From a3da095050facdc26e62fdbc2926df19829656cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Ta=C3=AFeb?= Date: Fri, 20 Dec 2024 18:39:28 +0100 Subject: [PATCH 1/3] fix: do not crash when deleting last estimation of a projet --- .../[projetId]/estimation/liste/page.tsx | 21 ++++++++++++++----- .../estimation/estimation-delete-modal.tsx | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx b/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx index 8af94c78..45bc31db 100644 --- a/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx +++ b/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx @@ -7,18 +7,29 @@ import { EstimationOverviewCard } from "@/src/components/estimation/estimation-o import Button from "@codegouvfr/react-dsfr/Button"; import { GenericFicheLink } from "@/src/components/common/generic-save-fiche/generic-fiche-link"; import { useUserStore } from "@/src/stores/user/provider"; +import { useEffect, useState } from "react"; -export default function CreateEstimationPage() { +export default function ListeEstimationPage() { + console.log("DANS ListeEstimationPage"); const currentProjet = useProjetsStore((state) => state.getCurrentProjet()); const currentUserId = useUserStore((state) => state.userInfos?.id); const isCurrentUserAdmin = useProjetsStore((state) => state.isCurrentUserAdmin(currentUserId)); + const [shouldRedirectToCreationPage, setShouldRedirectToCreationPage] = useState(false); + useEffect(() => { + if (shouldRedirectToCreationPage && currentProjet) { + redirect(PFMV_ROUTES.ESPACE_PROJET_CREATION_ESTIMATION(currentProjet.id)); + } + }, [currentProjet, shouldRedirectToCreationPage]); if (!currentProjet) { - return null; + return <>; } if (currentProjet.estimations.length < 1) { if (isCurrentUserAdmin) { - redirect(PFMV_ROUTES.ESPACE_PROJET_CREATION_ESTIMATION(currentProjet.id)); + if (!shouldRedirectToCreationPage) { + setShouldRedirectToCreationPage(true); + } + return <>; } else { return (
@@ -35,7 +46,7 @@ export default function CreateEstimationPage() { {`Vous pouvez estimer une fourchette de prix en fonction des matériaux et systèmes choisis.`}
- {currentProjet.estimations.map((estimation) => ( + {currentProjet?.estimations.map((estimation) => ( Ajouter une estimation diff --git a/src/components/estimation/estimation-delete-modal.tsx b/src/components/estimation/estimation-delete-modal.tsx index a03c3d26..e8bdb2ba 100644 --- a/src/components/estimation/estimation-delete-modal.tsx +++ b/src/components/estimation/estimation-delete-modal.tsx @@ -41,7 +41,7 @@ export function EstimationDeleteModal({ estimation }: ListeProjetsCardDeleteModa onClick: async () => { const res = await deleteEstimationAction(estimation.id); - notifications(res.type, res.message); + // notifications(res.type, res.message); const impactedProjet = getProjetById(estimation.projet_id); if (res.type === "success" && impactedProjet) { modal.close(); From ef07c3706c9062ffd6b3535c03257c905cabf5a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Ta=C3=AFeb?= Date: Mon, 30 Dec 2024 09:06:11 +0100 Subject: [PATCH 2/3] chore: code cleaning --- .../espace-projet/[projetId]/estimation/liste/page.tsx | 2 +- src/components/estimation/estimation-delete-modal.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx b/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx index 439134fa..ef088771 100644 --- a/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx +++ b/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx @@ -54,7 +54,7 @@ export default function ListeEstimationPage() { className="rounded-3xl" iconId="ri-add-circle-fill" iconPosition="left" - linkProps={{ href: PFMV_ROUTES.ESPACE_PROJET_CREATION_ESTIMATION(currentProjet?.id), target: "_self" }} + linkProps={{ href: PFMV_ROUTES.ESPACE_PROJET_CREATION_ESTIMATION(currentProjet.id), target: "_self" }} > Ajouter une estimation diff --git a/src/components/estimation/estimation-delete-modal.tsx b/src/components/estimation/estimation-delete-modal.tsx index e8bdb2ba..a03c3d26 100644 --- a/src/components/estimation/estimation-delete-modal.tsx +++ b/src/components/estimation/estimation-delete-modal.tsx @@ -41,7 +41,7 @@ export function EstimationDeleteModal({ estimation }: ListeProjetsCardDeleteModa onClick: async () => { const res = await deleteEstimationAction(estimation.id); - // notifications(res.type, res.message); + notifications(res.type, res.message); const impactedProjet = getProjetById(estimation.projet_id); if (res.type === "success" && impactedProjet) { modal.close(); From 6c6572781467c48fcf4ff78560a41428b95dbc2d Mon Sep 17 00:00:00 2001 From: mehdilouraoui Date: Mon, 6 Jan 2025 10:42:58 +0100 Subject: [PATCH 3/3] feat: more readability --- .../[projetId]/estimation/liste/page.tsx | 92 +++++++++---------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx b/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx index ef088771..203f9a18 100644 --- a/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx +++ b/src/app/(private)/espace-projet/[projetId]/estimation/liste/page.tsx @@ -12,61 +12,61 @@ import { useCanEditProjet } from "@/src/hooks/use-can-edit-projet"; export default function ListeEstimationPage() { const currentProjet = useProjetsStore((state) => state.getCurrentProjet()); const canEditProjet = useCanEditProjet(currentProjet?.id); - const [shouldRedirectToCreationPage, setShouldRedirectToCreationPage] = useState(false); + const [shouldRedirect, setShouldRedirect] = useState(false); + useEffect(() => { - if (shouldRedirectToCreationPage && currentProjet) { + if (shouldRedirect && currentProjet) { redirect(PFMV_ROUTES.ESPACE_PROJET_CREATION_ESTIMATION(currentProjet.id)); } - }, [currentProjet, shouldRedirectToCreationPage]); + }, [currentProjet, shouldRedirect]); - if (!currentProjet) { - return <>; - } - if (currentProjet.estimations.length < 1) { + if (!currentProjet) return null; + if (!currentProjet.estimations.length) { if (canEditProjet) { - if (!shouldRedirectToCreationPage) { - setShouldRedirectToCreationPage(true); - } - return <>; - } else { - return ( -
-
{"Aucune estimation n'a été faite pour ce projet"}
-
- ); + !shouldRedirect && setShouldRedirect(true); + return null; } - } else { return (
-
{"Je fais une estimation de budget pour mon projet"}
-
{`Mes solutions sélectionnées pour mon projet ${currentProjet?.nom}.`}
-
- {`Vous pouvez estimer une fourchette de prix en fonction des matériaux et systèmes choisis.`} -
-
- {currentProjet.estimations.map((estimation) => ( - - ))} -
-
- {canEditProjet && ( - - )} - - Revenir au tableau de bord - -
+
Aucune estimation {"n'a"} été faite pour ce projet
); } + + return ( +
+
+
Je fais une estimation de budget pour mon projet
+
Mes solutions sélectionnées pour mon projet {currentProjet.nom}.
+
+ Vous pouvez estimer une fourchette de prix en fonction des matériaux et systèmes choisis. +
+
+ +
+ {currentProjet.estimations.map((estimation) => ( + + ))} +
+ +
+ {canEditProjet && ( + + )} + + Revenir au tableau de bord + +
+
+ ); }