From 0784dab3fde82105f877ce37b4278a5f730ce5ac Mon Sep 17 00:00:00 2001 From: Paul Gaucher Date: Thu, 19 Dec 2024 11:52:38 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20mise=20a=20jour=20du=20warning=20suite?= =?UTF-8?q?=20au=20t=C3=A9l=C3=A9chargement=20de=20SIFA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/modules/mon-espace/SIFA/SIFAPage.tsx | 55 +++++++++++++++---------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/ui/modules/mon-espace/SIFA/SIFAPage.tsx b/ui/modules/mon-espace/SIFA/SIFAPage.tsx index d72ffc7ef..1a70475c8 100644 --- a/ui/modules/mon-espace/SIFA/SIFAPage.tsx +++ b/ui/modules/mon-espace/SIFA/SIFAPage.tsx @@ -20,7 +20,7 @@ import { import { useQuery, useQueryClient } from "@tanstack/react-query"; import groupBy from "lodash.groupby"; import { ChangeEvent, useEffect, useMemo, useRef, useState } from "react"; -import { useRecoilValue, useSetRecoilState } from "recoil"; +import { useRecoilState, useRecoilValue, useSetRecoilState } from "recoil"; import { DuplicateEffectifGroupPagination, getSIFADate, SIFA_GROUP } from "shared"; import { _get, _getBlob } from "@/common/httpClient"; @@ -44,11 +44,20 @@ import { DownloadLine, ExternalLinkLine } from "@/theme/components/icons"; import Eye from "@/theme/components/icons/Eye"; function useOrganismesEffectifs(organismeId: string) { - const setCurrentEffectifsState = useSetRecoilState(effectifsStateAtom); + const [currentEffectifsState, setCurrentEffectifsState] = useRecoilState(effectifsStateAtom); + const [sifaInvalidCount, setSifaInvalidCount] = useState(0); const queryClient = useQueryClient(); const prevOrganismeId = useRef(null); const setEffectifFromDecaState = useSetRecoilState(effectifFromDecaAtom); + useEffect(() => { + const invalidCount = currentEffectifsState + .values() + .toArray() + .filter((effectif) => effectif.requiredSifa.length > 0).length; + setSifaInvalidCount(invalidCount); + }, [currentEffectifsState]); + useEffect(() => { if (prevOrganismeId.current !== organismeId) { prevOrganismeId.current = organismeId; @@ -74,7 +83,12 @@ function useOrganismesEffectifs(organismeId: string) { return organismesEffectifs; }); - return { isLoading: isFetching || isLoading, organismesEffectifs: organismesEffectifs || [], refetch }; + return { + isLoading: isFetching || isLoading, + organismesEffectifs: organismesEffectifs || [], + refetch, + sifaInvalidCount, + }; } interface SIFAPageProps { @@ -86,7 +100,7 @@ const SIFAPage = (props: SIFAPageProps) => { const { trackPlausibleEvent } = usePlausibleTracking(); const { toastWarning, toastSuccess } = useToaster(); const organisme = useRecoilValue(organismeAtom); - const { isLoading, organismesEffectifs, refetch } = useOrganismesEffectifs(organisme._id); + const { isLoading, organismesEffectifs, refetch, sifaInvalidCount } = useOrganismesEffectifs(organisme._id); const [show, setShow] = useState(false); const handleToggle = () => { setShow(!show); @@ -114,11 +128,9 @@ const SIFAPage = (props: SIFAPageProps) => { }; const handleToastOnSifaDownload = () => { - const nbEffectifsInvalides = organismesEffectifs.filter((effectif) => effectif.requiredSifa.length > 0).length; - - nbEffectifsInvalides > 0 + sifaInvalidCount > 0 ? toastWarning( - `Parmi les ${organismesEffectifs.length} effectifs que vous avez déclarés, ${nbEffectifsInvalides} d'entre eux ne comportent pas l'ensemble des informations requises pour l'enquête SIFA. Si vous ne les corrigez/complétez pas, votre fichier risque d'être rejeté. Vous pouvez soit les éditer directement sur la plateforme soit modifier votre fichier sur votre ordinateur.`, + `Parmi les ${organismesEffectifs.length} effectifs que vous avez déclarés, ${sifaInvalidCount} d'entre eux ne comportent pas l'ensemble des informations requises pour l'enquête SIFA. Si vous ne les corrigez/complétez pas, votre fichier risque d'être rejeté. Vous pouvez soit les éditer directement sur la plateforme soit modifier votre fichier sur votre ordinateur.`, { isClosable: true, duration: 20000, @@ -133,6 +145,18 @@ const SIFAPage = (props: SIFAPageProps) => { ); }; + const downloadSifaFile = async () => { + trackPlausibleEvent("telechargement_sifa"); + downloadObject( + await _getBlob(`/api/v1/organismes/${organisme._id}/sifa-export`), + `tdb-données-sifa-${ + organisme.enseigne ?? organisme.raison_sociale ?? "Organisme inconnu" + }-${new Date().toLocaleDateString()}.csv`, + "text/plain" + ); + handleToastOnSifaDownload(); + }; + if (isLoading) { return (
@@ -150,20 +174,7 @@ const SIFAPage = (props: SIFAPageProps) => { - { - trackPlausibleEvent("telechargement_sifa"); - downloadObject( - await _getBlob(`/api/v1/organismes/${organisme._id}/sifa-export`), - `tdb-données-sifa-${ - organisme.enseigne ?? organisme.raison_sociale ?? "Organisme inconnu" - }-${new Date().toLocaleDateString()}.csv`, - "text/plain" - ); - handleToastOnSifaDownload(); - }} - > + Télécharger le fichier SIFA