diff --git a/client/src/components/items/staff-action.tsx b/client/src/components/items/staff-action.tsx index 2a25aab..1b55c5e 100644 --- a/client/src/components/items/staff-action.tsx +++ b/client/src/components/items/staff-action.tsx @@ -36,8 +36,8 @@ const StaffActions = ({ const [isAllRead, setIsAllRead] = useState(() => { return ( - data?.threads.every((thread) => - thread.responses.every((response) => response.read) + data?.threads?.every((thread) => + thread.responses?.every((response) => response.read) ) || false ); }); @@ -114,25 +114,25 @@ const StaffActions = ({ useEffect(() => { const allRead = - data?.threads.every((thread) => - thread.responses.every((response) => response.read) + data?.threads?.every((thread) => + thread.responses?.every((response) => response.read) ) || false; setIsAllRead(allRead); }, [data]); const cleanResponseMessage = (message: string) => { return message - .replace(/De:.*$/s, "") - .replace(/Objet :.*$/s, "") - .replace(/Envoyé :.*$/s, "") - .replace(/Le lun.*$/s, "") - .replace(/Le mar.*$/s, "") - .replace(/Le mer.*$/s, "") - .replace(/Le jeu.*$/s, "") - .replace(/Le ven.*$/s, "") - .replace(/Le sam.*$/s, "") - .replace(/Le dim.*$/s, "") - .trim(); + ?.replace(/De:.*$/s, "") + ?.replace(/Objet :.*$/s, "") + ?.replace(/Envoyé :.*$/s, "") + ?.replace(/Le lun.*$/s, "") + ?.replace(/Le mar.*$/s, "") + ?.replace(/Le mer.*$/s, "") + ?.replace(/Le jeu.*$/s, "") + ?.replace(/Le ven.*$/s, "") + ?.replace(/Le sam.*$/s, "") + ?.replace(/Le dim.*$/s, "") + ?.trim(); }; return ( @@ -160,21 +160,22 @@ const StaffActions = ({ const className = isStaffResponse ? "staffSide" : "user-side"; return ( -
- - {cleanResponseMessage(response.responseMessage).replaceAll( - "
", - "\n" - )} -
- - Répondu le {responseDate} à {responseTime} par{" "} - {response.team.includes("user") - ? data.name || response.team - : response.team} - -
-
+ response.responseMessage && ( +
+ + {cleanResponseMessage( + response.responseMessage + )?.replaceAll("
", "\n")} +
+ + Répondu le {responseDate} à {responseTime} par{" "} + {response.team.includes("user") + ? data.name || response.team + : response.team} + +
+
+ ) ); }) )} diff --git a/client/src/components/mail-form/index.tsx b/client/src/components/mail-form/index.tsx index 55089cf..7696f1e 100644 --- a/client/src/components/mail-form/index.tsx +++ b/client/src/components/mail-form/index.tsx @@ -1,6 +1,5 @@ import { Button, Col, Row, TextArea, ButtonGroup } from "@dataesr/dsfr-plus"; import { useState } from "react"; -import TemplateResponseModal from "./template"; function EmailForm({ userResponse, @@ -9,24 +8,94 @@ function EmailForm({ sendEmail, contribution, }) { - const [isModalOpen, setModalOpen] = useState(false); + const [selectedTemplate, setSelectedTemplate] = useState(""); - const openModal = () => setModalOpen(true); - const closeModal = () => setModalOpen(false); + const templates = [ + { label: "Accès API scanR", value: "api" }, + { label: "scanR Ne gère pas cela", value: "desole" }, + { label: "Mauvais interlocuteur", value: "interlocuteur" }, + { label: "Merci !", value: "merci" }, + { label: "Accès thèse", value: "thèse" }, + { label: "Accès documents", value: "documents" }, + { label: "Mise à jour", value: "maj" }, + { label: "Publication liées", value: "publications" }, + { label: "Contenue retiré", value: "suppression" }, + ]; + + const handleTemplateChange = (e) => { + const value = e.target.value; + setSelectedTemplate(value); + + if (value === "api") { + setUserResponse(`Bonjour, + Nous nous réjouissons que les données de scanR suscitent l'intérêt de l'ISC dont nous suivons les travaux. + L'accès aux API scanR est possible avec le compte [Identifiant] et le mot de passe [Mot de passe]. + Les API sont documentées ici https://scanr.enseignementsup-recherche.gouv.fr/docs/overview. + N'hésitez pas à nous solliciter pour des compléments d'informations. + Cordialement, + Département Ingénierie et science des données`); + } + if (value === "desole") { + setUserResponse( + `Bonjour, désolé scanR ne gère pas cela. Cordialement L'équipe scanR` + ); + } + if (value === "interlocuteur") + setUserResponse( + `Bonjour, Il faut vous adresser directement au laboratoire de votre choix. Votre message via scanR ne parvient qu'aux gestionnaires de l'application scanR (et pas au laboratoire). Pour joindre les laboratoires, partez plutôt de leur site web propre. Cordialement L'équipe scanR` + ); + if (value === "merci") + setUserResponse( + `Bonjour, merci pour ce retour encourageant ! Cordialement L'équipe scanR` + ); + if (value === "thèse") + setUserResponse( + `Bonjour, Vous trouverez ici XXXXXXXXXXXXXXXXXXXX les renseignements pour accéder à la thèse Cordialement L'équipe scanR` + ); + if (value === "documents") + setUserResponse( + `Bonjour scanR ne dispose pas des documents indexées, mais uniquement des métadonnées les décrivant. Cordialement L'équipe scanR` + ); + if (value === "maj") + setUserResponse( + `Bonjour, Merci pour ce signalement. Les modifications seront visibles à la prochaine actualisation du site, d'ici quelques semaines. Cordialement L'équipe scanR` + ); + if (value === "publications") + setUserResponse( + `Bonjour, merci pour votre contribution. Les publications seront liées dans les prochains jours. Cordialement L'équipe scanR` + ); + if (value === "suppression") + setUserResponse( + `Bonjour, votre thèse et votre profil auteur ont bien été retirés. Cordialement L'équipe scanR` + ); + }; return ( <> {contribution?.email && ( - + +