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
Apuntarme
{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.
setShowWelcomeModal(false)}>
Cerrar
Apuntarme
)}
{
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;