'use client'; // src/app/pages/subscribe.js import React, { useState, useEffect } from 'react'; import DjangoCSRFToken from '@/components/DjangoCSRFToken'; import Logo from '@/components/Logo'; import { useSearchParams, useRouter } from 'next/navigation'; import InputTextIcon from '@/components/InputTextIcon'; import Loader from '@/components/Loader'; // Importez le composant Loader import Button from '@/components/Button'; // Importez le composant Button import Popup from '@/components/Popup'; // Importez le composant Popup import { User, KeySquare } from 'lucide-react'; // Importez directement les icônes nécessaires import { FE_USERS_LOGIN_URL } from '@/utils/Url'; import { useCsrfToken } from '@/context/CsrfContext'; import { subscribe } from '@/app/actions/authAction'; import logger from '@/utils/logger'; export default function Page() { const searchParams = useSearchParams(); const [errorMessage, setErrorMessage] = useState(''); const [userFieldError, setUserFieldError] = useState(''); const [password1FieldError, setPassword1FieldError] = useState(''); const [password2FieldError, setPassword2FieldError] = useState(''); const [isLoading, setIsLoading] = useState(false); const [popupVisible, setPopupVisible] = useState(false); const [popupMessage, setPopupMessage] = useState(''); const router = useRouter(); const csrfToken = useCsrfToken(); const establishment_id = searchParams.get('establishment_id'); function isOK(data) { return data.errorMessage === ''; } function subscribeFormSubmit(formData) { const data = { email: formData.get('login'), password1: formData.get('password1'), password2: formData.get('password2'), establishment_id: establishment_id, }; setIsLoading(true); subscribe(data, csrfToken) .then((data) => { logger.debug('Success:', data); setUserFieldError(''); setPassword1FieldError(''); setPassword2FieldError(''); setErrorMessage(''); if (isOK(data)) { setIsLoading(false); setPopupMessage(data.message); setPopupVisible(true); } else { setIsLoading(false); if (data.errorMessage) { setErrorMessage(data.errorMessage); } if (data.errorFields) { setUserFieldError(data.errorFields.email); setPassword1FieldError(data.errorFields.password1); setPassword2FieldError(data.errorFields.password2); } } }) .catch((error) => { setIsLoading(false); logger.error('Error fetching data:', error); error = error.errorMessage; logger.debug(error); }); } if (isLoading === true) { return ; // Affichez le composant Loader } else { return ( <>

Nouveau profil

{ e.preventDefault(); subscribeFormSubmit(new FormData(e.target)); }} >

{errorMessage}


{ setPopupVisible(false); router.push(`${FE_USERS_LOGIN_URL}`); }} onCancel={() => setPopupVisible(false)} uniqueConfirmButton={true} popupClassName="w-full max-w-xs sm:max-w-md" /> ); } }