From 5c99a5bf102d4b0983f52c4fd5db71ff804dc53e Mon Sep 17 00:00:00 2001 From: celineung Date: Mon, 9 Dec 2024 18:14:04 +0100 Subject: [PATCH] fix displayed beneficiary representative --- .../beneficiary/BeneficiaryFormSection.tsx | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/front/src/app/components/forms/convention/sections/beneficiary/BeneficiaryFormSection.tsx b/front/src/app/components/forms/convention/sections/beneficiary/BeneficiaryFormSection.tsx index c37940fd91..672120de9d 100644 --- a/front/src/app/components/forms/convention/sections/beneficiary/BeneficiaryFormSection.tsx +++ b/front/src/app/components/forms/convention/sections/beneficiary/BeneficiaryFormSection.tsx @@ -3,7 +3,7 @@ import { RadioButtons } from "@codegouvfr/react-dsfr/RadioButtons"; import { Select } from "@codegouvfr/react-dsfr/SelectNext"; import { differenceInYears } from "date-fns"; import { keys } from "ramda"; -import React, { useCallback, useEffect, useRef, useState } from "react"; +import React, { useCallback, useEffect, useState } from "react"; import { useFormContext } from "react-hook-form"; import { useDispatch } from "react-redux"; import { @@ -68,15 +68,21 @@ export const BeneficiaryFormSection = ({ formConventionFieldsLabels(values.internshipKind), ); const formContents = getFormFields(); - const initialBeneficiaryRepresentative = useRef( - values.signatories.beneficiaryRepresentative, - ).current; useEffect(() => { - if (hasBeneficiaryRepresentativeData(initialBeneficiaryRepresentative)) { + if ( + hasBeneficiaryRepresentativeData( + values.signatories.beneficiaryRepresentative, + ) && + !isMinorOrProtected + ) { dispatch(conventionSlice.actions.isMinorChanged(true)); } - }, [dispatch, initialBeneficiaryRepresentative]); + }, [ + dispatch, + values.signatories.beneficiaryRepresentative, + isMinorOrProtected, + ]); useEffect(() => { if (userFieldsAreFilled) { @@ -118,12 +124,15 @@ export const BeneficiaryFormSection = ({ new Date(value), ); const newIsMinor = age < 18; - newIsMinor - ? setValue( - "signatories.beneficiaryRepresentative.role", - "beneficiary-representative", - ) - : setValue("signatories.beneficiaryRepresentative", undefined); + if (newIsMinor) { + setValue( + "signatories.beneficiaryRepresentative.role", + "beneficiary-representative", + ); + } + if (!newIsMinor && !isMinorOrProtected) { + setValue("signatories.beneficiaryRepresentative", undefined); + } setIsMinorAccordingToAge(newIsMinor); dispatch(conventionSlice.actions.isMinorChanged(newIsMinor)); },