From b6d7000ad59a49d51b3bc8ae73e60493a7dc1af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Sat, 26 Jun 2021 12:27:06 +0200 Subject: [PATCH] Create EkriKomante component --- components/komante/ekri-komante.js | 151 +++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 components/komante/ekri-komante.js diff --git a/components/komante/ekri-komante.js b/components/komante/ekri-komante.js new file mode 100644 index 0000000..5c9bba7 --- /dev/null +++ b/components/komante/ekri-komante.js @@ -0,0 +1,151 @@ +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 +