import {useCallback, useEffect, useState} from 'react' import PropTypes from 'prop-types' import axios from 'axios' import { TextField, Container, Button, Snackbar, LinearProgress, Typography } from '@material-ui/core' import MuiAlert from '@material-ui/lab/Alert' const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:1337' function Alert(props) { return } function EkriKomante({session, teks, meteEsKomanteOuve}) { const {jwt, user} = session const {_id} = teks 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 = () => { meteChaje(true) const {kontni} = komante if (kontni === '') { meteEre({mesaj: 'Champ obligatoire'}) meteChaje(false) return } const headers = { 'content-type': 'application/json', Authorization: `Bearer ${jwt}` } axios.post(`${API_URL}/komante`, { kontni, teks: _id, user: user._id }, { headers }) .then(() => { meteSikse('Commentaire envoyé avec succès. Il apparaîtra sur le site après validation.') meteChaje(false) }) .catch(error => { meteEre(error) 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.mesaj} )}
) } EkriKomante.propTypes = { session: PropTypes.object.isRequired, teks: PropTypes.object.isRequired, meteEsKomanteOuve: PropTypes.func.isRequired } export default EkriKomante