refactor: Affichage des notifications dans la partie "Users"

(subscribe)
This commit is contained in:
N3WT DE COMPET
2025-05-31 09:34:28 +02:00
parent e509625811
commit af30ae33b5
3 changed files with 24 additions and 40 deletions

View File

@ -361,7 +361,7 @@ class SubscribeView(APIView):
} }
) )
def post(self, request): def post(self, request):
retourErreur = error.returnMessage[error.BAD_URL] retourErreur = ''
retour = '' retour = ''
newProfilConnection = JSONParser().parse(request) newProfilConnection = JSONParser().parse(request)
establishment_id = newProfilConnection['establishment_id'] establishment_id = newProfilConnection['establishment_id']

View File

@ -50,7 +50,7 @@ export default function Page() {
); );
} else if (data.errorFields) { } else if (data.errorFields) {
showNotification( showNotification(
data.errorFields.password1, data.errorFields.password1 || data.errorFields.password2,
'error', 'error',
'Erreur' 'Erreur'
); );

View File

@ -1,14 +1,13 @@
'use client'; 'use client';
// src/app/pages/subscribe.js
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import DjangoCSRFToken from '@/components/DjangoCSRFToken'; import DjangoCSRFToken from '@/components/DjangoCSRFToken';
import Logo from '@/components/Logo'; import Logo from '@/components/Logo';
import { useSearchParams, useRouter } from 'next/navigation'; import { useSearchParams, useRouter } from 'next/navigation';
import InputTextIcon from '@/components/InputTextIcon'; import InputTextIcon from '@/components/InputTextIcon';
import Loader from '@/components/Loader'; // Importez le composant Loader import Loader from '@/components/Loader';
import Button from '@/components/Button'; // Importez le composant Button import Button from '@/components/Button';
import { User, KeySquare } from 'lucide-react'; // Importez directement les icônes nécessaires import { User, KeySquare } from 'lucide-react';
import { FE_USERS_LOGIN_URL } from '@/utils/Url'; import { FE_USERS_LOGIN_URL } from '@/utils/Url';
import { useCsrfToken } from '@/context/CsrfContext'; import { useCsrfToken } from '@/context/CsrfContext';
import { subscribe } from '@/app/actions/authAction'; import { subscribe } from '@/app/actions/authAction';
@ -18,11 +17,6 @@ import { useNotification } from '@/context/NotificationContext';
export default function Page() { export default function Page() {
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const { showNotification } = useNotification(); const { showNotification } = useNotification();
const [errorMessage, setErrorMessage] = useState('');
const [userFieldError, setUserFieldError] = useState('');
const [password1FieldError, setPassword1FieldError] = useState('');
const [password2FieldError, setPassword2FieldError] = useState('');
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
const router = useRouter(); const router = useRouter();
@ -30,10 +24,6 @@ export default function Page() {
const establishment_id = searchParams.get('establishment_id'); const establishment_id = searchParams.get('establishment_id');
function isOK(data) {
return data.errorMessage === '';
}
function subscribeFormSubmit(formData) { function subscribeFormSubmit(formData) {
const data = { const data = {
email: formData.get('login'), email: formData.get('login'),
@ -45,31 +35,29 @@ export default function Page() {
subscribe(data, csrfToken) subscribe(data, csrfToken)
.then((data) => { .then((data) => {
logger.debug('Success:', data); logger.debug('Success:', data);
setUserFieldError(''); if (data.message !== '') {
setPassword1FieldError('');
setPassword2FieldError('');
setErrorMessage('');
if (isOK(data)) {
setIsLoading(false);
showNotification( showNotification(
data.message, data.message,
'success', 'success',
'Succès' 'Succès'
); );
router.push(`${FE_USERS_LOGIN_URL}`); router.push(`${FE_USERS_LOGIN_URL}`);
} else { } else {
setIsLoading(false); if (data.errorMessage) {
showNotification( showNotification(
data.errorMessage, data.errorMessage,
'error', 'error',
'Erreur' 'Erreur'
); );
if (data.errorFields) { } else if (data.errorFields) {
setUserFieldError(data.errorFields.email); showNotification(
setPassword1FieldError(data.errorFields.password1); data.errorFields.email || data.errorFields.password1 || data.errorFields.password2,
setPassword2FieldError(data.errorFields.password2); 'error',
'Erreur'
);
} }
} }
setIsLoading(false);
}) })
.catch((error) => { .catch((error) => {
setIsLoading(false); setIsLoading(false);
@ -80,7 +68,7 @@ export default function Page() {
} }
if (isLoading === true) { if (isLoading === true) {
return <Loader />; // Affichez le composant Loader return <Loader />;
} else { } else {
return ( return (
<> <>
@ -105,7 +93,6 @@ export default function Page() {
IconItem={User} IconItem={User}
label="Identifiant" label="Identifiant"
placeholder="Identifiant" placeholder="Identifiant"
errorMsg={userFieldError}
className="w-full mb-5" className="w-full mb-5"
/> />
<InputTextIcon <InputTextIcon
@ -114,7 +101,6 @@ export default function Page() {
IconItem={KeySquare} IconItem={KeySquare}
label="Mot de passe" label="Mot de passe"
placeholder="Mot de passe" placeholder="Mot de passe"
errorMsg={password1FieldError}
className="w-full mb-5" className="w-full mb-5"
/> />
<InputTextIcon <InputTextIcon
@ -123,10 +109,8 @@ export default function Page() {
IconItem={KeySquare} IconItem={KeySquare}
label="Confirmation mot de passe" label="Confirmation mot de passe"
placeholder="Confirmation mot de passe" placeholder="Confirmation mot de passe"
errorMsg={password2FieldError}
className="w-full" className="w-full"
/> />
<p className="text-red-500">{errorMessage}</p>
<div className="form-group-submit mt-4"> <div className="form-group-submit mt-4">
<Button <Button
text="Enregistrer" text="Enregistrer"