diff --git a/Front-End/src/components/Structure/Files/FilesGroupsManagement.js b/Front-End/src/components/Structure/Files/FilesGroupsManagement.js
index 708aabb..ca10c02 100644
--- a/Front-End/src/components/Structure/Files/FilesGroupsManagement.js
+++ b/Front-End/src/components/Structure/Files/FilesGroupsManagement.js
@@ -27,6 +27,8 @@ import RegistrationFileGroupForm from '@/components/Structure/Files/Registration
import logger from '@/utils/logger';
import ParentFilesSection from '@/components/Structure/Files/ParentFilesSection';
import SectionHeader from '@/components/SectionHeader';
+import Popup from '@/components/Popup';
+import Loader from '@/components/Loader';
export default function FilesGroupsManagement({
csrfToken,
@@ -43,10 +45,13 @@ export default function FilesGroupsManagement({
const [isGroupModalOpen, setIsGroupModalOpen] = useState(false);
const [groupToEdit, setGroupToEdit] = useState(null);
const [reloadTemplates, setReloadTemplates] = useState(false);
- const [editingDocumentId, setEditingDocumentId] = useState(null);
- const [formData, setFormData] = useState({});
- const [uploadedFileName, setUploadedFileName] = useState('');
+ const [popupVisible, setPopupVisible] = useState(false);
+ const [popupMessage, setPopupMessage] = useState('');
+ const [removePopupVisible, setRemovePopupVisible] = useState(false);
+ const [removePopupMessage, setRemovePopupMessage] = useState('');
+ const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {});
+ const [isLoading, setIsLoading] = useState(false);
const handleReloadTemplates = () => {
setReloadTemplates(true);
@@ -101,55 +106,79 @@ export default function FilesGroupsManagement({
}, [reloadTemplates, selectedEstablishmentId]);
const deleteTemplateMaster = (templateMaster) => {
- // Supprimer les clones associés via l'API DocuSeal
- const removeClonesPromises = schoolFileTemplates
- .filter((template) => template.master === templateMaster.id)
- .map((template) => removeTemplate(template.id));
+ setRemovePopupVisible(true);
+ setRemovePopupMessage(
+ `Attentions ! \nVous êtes sur le point de supprimer le document "${templateMaster.name}".\nÊtes-vous sûr(e) de vouloir poursuivre l'opération ?`
+ );
+ setRemovePopupOnConfirm(() => () => {
+ setIsLoading(true);
+ // Supprimer les clones associés via l'API DocuSeal
+ const removeClonesPromises = schoolFileTemplates
+ .filter((template) => template.master === templateMaster.id)
+ .map((template) => removeTemplate(template.id));
- // Ajouter la suppression du master à la liste des promesses
- removeClonesPromises.push(removeTemplate(templateMaster.id));
+ // Ajouter la suppression du master à la liste des promesses
+ removeClonesPromises.push(removeTemplate(templateMaster.id));
- // Attendre que toutes les suppressions dans DocuSeal soient terminées
- Promise.all(removeClonesPromises)
- .then((responses) => {
- const allSuccessful = responses.every((response) => response.ok);
- if (allSuccessful) {
- logger.debug('Master et clones supprimés avec succès de DocuSeal.');
+ // Attendre que toutes les suppressions dans DocuSeal soient terminées
+ Promise.all(removeClonesPromises)
+ .then((responses) => {
+ const allSuccessful = responses.every((response) => response.ok);
+ if (allSuccessful) {
+ logger.debug('Master et clones supprimés avec succès de DocuSeal.');
- // Supprimer le template master de la base de données
- deleteRegistrationSchoolFileMaster(templateMaster.id, csrfToken)
- .then((response) => {
- if (response.ok) {
- setSchoolFileMasters(
- schoolFileMasters.filter(
- (fichier) => fichier.id !== templateMaster.id
- )
+ // Supprimer le template master de la base de données
+ deleteRegistrationSchoolFileMaster(templateMaster.id, csrfToken)
+ .then((response) => {
+ if (response.ok) {
+ setSchoolFileMasters(
+ schoolFileMasters.filter(
+ (fichier) => fichier.id !== templateMaster.id
+ )
+ );
+ setPopupMessage(
+ `Le document "${templateMaster.name}" a été correctement supprimé.`
+ );
+ setPopupVisible(true);
+ setRemovePopupVisible(false);
+ setIsLoading(false);
+ } else {
+ setPopupMessage(
+ `Erreur lors de la suppression du document "${templateMaster.name}".`
+ );
+ setPopupVisible(true);
+ setRemovePopupVisible(false);
+ setIsLoading(false);
+ }
+ })
+ .catch((error) => {
+ console.error('Error deleting file from database:', error);
+ setPopupMessage(
+ `Erreur lors de la suppression du document "${templateMaster.name}".`
);
- alert('Fichier supprimé avec succès.');
- } else {
- alert(
- 'Erreur lors de la suppression du fichier dans la base de données.'
- );
- }
- })
- .catch((error) => {
- console.error('Error deleting file from database:', error);
- alert(
- 'Erreur lors de la suppression du fichier dans la base de données.'
- );
- });
- } else {
- alert(
- 'Erreur lors de la suppression du master ou des clones dans DocuSeal.'
+ setPopupVisible(true);
+ setRemovePopupVisible(false);
+ setIsLoading(false);
+ });
+ } else {
+ setPopupMessage(
+ `Erreur lors de la suppression du document "${templateMaster.name}".`
+ );
+ setPopupVisible(true);
+ setRemovePopupVisible(false);
+ setIsLoading(false);
+ }
+ })
+ .catch((error) => {
+ console.error('Error removing template from DocuSeal:', error);
+ setPopupMessage(
+ `Erreur lors de la suppression du document "${templateMaster.name}".`
);
- }
- })
- .catch((error) => {
- console.error('Error removing template from DocuSeal:', error);
- alert(
- 'Erreur lors de la suppression du master ou des clones dans DocuSeal.'
- );
- });
+ setPopupVisible(true);
+ setRemovePopupVisible(false);
+ setIsLoading(false);
+ });
+ });
};
const removeTemplate = (templateId) => {
@@ -428,6 +457,10 @@ export default function FilesGroupsManagement({
},
];
+ if (isLoading) {
+ return