import {useCallback, useEffect, useState, forwardRef} from 'react' import PropTypes from 'prop-types' import axios from 'axios' import { TextField, Container, Button, Snackbar, LinearProgress, Typography } from '@mui/material' import MuiAlert from '@mui/material/Alert' const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:1337/api' const Alert = forwardRef(function Alert(props, ref) { return }) function EkriKomante({session, paroleId, meteEsKomanteOuve}) { const {jwt, user} = session const [komante, meteKomante] = useState({kontni: ''}) const [ere, meteEre] = useState('') const [sikse, meteSikse] = useState('') const [chaje, meteChaje] = useState(false) const [esOuve, meteEsOuve] = useState(false) const handleClick = async () => { meteChaje(true) const {kontni} = komante if (kontni === '') { meteEre({error: {message: 'Champ obligatoire'}}) meteChaje(false) return } const headers = { 'content-type': 'application/json', Authorization: `Bearer ${jwt}` } try { await axios.post(`${API_URL}/commentaires`, { data: { contenu: kontni, parole: paroleId, user: { id: user.id, username: user.username, email: user.email }, datePublication: new Date() } }, { headers }) meteSikse('Commentaire envoyé avec succès. Il apparaîtra sur le site après validation.') meteChaje(false) } catch (error) { meteEre(error?.response?.data) meteChaje(false) } } const handleUpdate = useCallback(update => { meteKomante({...komante, ...update}) }, [komante]) const handleClose = (event, reason) => { if (reason === 'clickaway') { return } meteEsOuve(false) meteSikse('') meteEre('') meteEsKomanteOuve(false) } const handleReset = () => { meteKomante({kontni: ''}) } useEffect(() => { if (sikse) { meteEsOuve(true) handleReset() } }, [sikse]) useEffect(() => { if (ere) { meteEsOuve(true) } }, [ere]) return (
handleUpdate({kontni: event.target.value})} />
{chaje && }
{sikse && ( {sikse} )} {ere && ( Une erreur s’est produite : {ere?.error?.message} )}
) } EkriKomante.propTypes = { session: PropTypes.object.isRequired, paroleId: PropTypes.number.isRequired, meteEsKomanteOuve: PropTypes.func.isRequired } export default EkriKomante