import { useEffect, useState } from 'react'; import { Modal, Button } from 'react-bootstrap'; import { useConfig } from '../hooks/useConfig'; import { useAuth } from '../hooks/useAuth'; import { useDataContext } from '../hooks/useDataContext'; import { DataProvider } from '../context/DataContext'; import List from '../components/List'; import { DateParser } from '../util/parsers/dateParser'; import CustomContainer from '../components/CustomContainer'; import ContentWrapper from '../components/ContentWrapper'; import LoadingIcon from '../components/LoadingIcon'; import NewUserForm from '../components/Solicitudes/NewUserForm'; import CustomModal from '../components/CustomModal'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faPencil } from '@fortawesome/free-solid-svg-icons'; import IfNotAuthenticated from '../components/Auth/IfNotAuthenticated'; import NotificationModal from '../components/NotificationModal'; import { useError } from '../context/ErrorContext'; const ListaEspera = () => { const { config, configLoading } = useConfig(); const { showError } = useError(); if (configLoading) return

; const reqConfig = { baseUrl: config.apiConfig.baseUrl + config.apiConfig.endpoints.users.waitlistLimited, requestUrl: config.apiConfig.baseUrl + config.apiConfig.endpoints.requests.all, params: {} }; return ( ); }; const ListaEsperaContent = ({ reqConfig }) => { const { authStatus } = useAuth(); const { data, dataLoading, postData } = useDataContext(); const [showWelcomeModal, setShowWelcomeModal] = useState(false); const [showNewUserFormModal, setShowNewUserFormModal] = useState(false); const [showConfirmationModal, setShowConfirmationModal] = useState(false); const [validationErrors, setValidationErrors] = useState({}); useEffect(() => { if (authStatus !== 'authenticated' && authStatus !== 'unauthenticated') return; if (authStatus === 'authenticated') { setShowWelcomeModal(false); return; } const hasSeenModal = localStorage.getItem('welcomeModalSeen') === 'true'; if (!hasSeenModal) { setShowWelcomeModal(true); localStorage.setItem('welcomeModalSeen', 'true'); } }, [authStatus]); const handleRegisterSubmit = async (formData) => { setValidationErrors({}); try { const request = await postData( reqConfig.requestUrl, { type: 0, status: 0, metadata: { displayName: formData.displayName, username: formData.username, dni: formData.dni, phone: formData.phone, email: formData.email, memberNumber: formData.memberNumber, plotNumber: formData.plotNumber, type: formData.type, address: formData.address, zipCode: formData.zipCode, city: formData.city } } ); const requestId = request?.requestId; if (!requestId) throw new Error("No se pudo registrar la solicitud."); setShowNewUserFormModal(false); setShowConfirmationModal(true); // eslint-disable-next-line no-unused-vars } catch (_err) { setValidationErrors({ general: "Error inesperado al enviar la solicitud" }); } }; const handleOpenFormModal = () => { setValidationErrors({}); setShowWelcomeModal(false); setShowNewUserFormModal(true); }; if (dataLoading) return

; return (

Lista de Espera


{authStatus === 'unauthenticated' && ( setShowWelcomeModal(false)}> ¿Quieres unirte?

Puedes apuntarte a la lista de espera clicando en el botón de abajo. Una persona de la directiva revisará tu solicitud y se te notificará por email si entras o no.

)} { setShowNewUserFormModal(false); setValidationErrors({}); }} > setShowConfirmationModal(false)} title="Solicitud enviada" message="Tu solicitud ha sido enviada correctamente. Te notificaremos por email si entras o no." variant="success" buttons={[ { label: 'Aceptar', variant: 'success', onClick: () => setShowConfirmationModal(false) } ]} />
); }; export default ListaEspera;