📦 NEW: Édition d'un commentaire (frontend)
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
				
			|||||||
import Link from 'next/link';
 | 
					import Link from 'next/link';
 | 
				
			||||||
import { forwardRef, useContext } from 'react';
 | 
					import { useEffect, useState, forwardRef, useContext, Fragment } from 'react';
 | 
				
			||||||
import date from 'date-and-time';
 | 
					import date from 'date-and-time';
 | 
				
			||||||
 | 
					import htmlParser from 'html-react-parser';
 | 
				
			||||||
import { UserContext } from '../../../contexts/UserContext';
 | 
					import { UserContext } from '../../../contexts/UserContext';
 | 
				
			||||||
import { API_URL } from '../../../utils/config/config';
 | 
					import { API_URL } from '../../../utils/config/config';
 | 
				
			||||||
import api from '../../../utils/api';
 | 
					import api from '../../../utils/api';
 | 
				
			||||||
@@ -8,7 +9,14 @@ import './CommentCard.css';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const CommentCard = forwardRef((props, ref) => {
 | 
					const CommentCard = forwardRef((props, ref) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const { isAuth, user } = useContext(UserContext);
 | 
					    const { isAuth, user }          = useContext(UserContext);
 | 
				
			||||||
 | 
					    const [isEditing, setEditing]   = useState(false);
 | 
				
			||||||
 | 
					    const [editInput, setEditInput] = useState("");
 | 
				
			||||||
 | 
					    const [message, setMessage]     = useState("");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    useEffect(() => {
 | 
				
			||||||
 | 
					        setEditInput(props.message);
 | 
				
			||||||
 | 
					    }, []);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const deleteCommentById = async () => {
 | 
					    const deleteCommentById = async () => {
 | 
				
			||||||
        props.manageComment.setLoadingComments(true);
 | 
					        props.manageComment.setLoadingComments(true);
 | 
				
			||||||
@@ -24,6 +32,26 @@ const CommentCard = forwardRef((props, ref) => {
 | 
				
			|||||||
        props.manageComment.setLoadingComments(false);
 | 
					        props.manageComment.setLoadingComments(false);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const handleChange = (event) => {
 | 
				
			||||||
 | 
					        setEditInput(event.target.value);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const handleSubmit = (event) => {
 | 
				
			||||||
 | 
					        event.preventDefault();
 | 
				
			||||||
 | 
					        api.put(`/comments/${props.id}`, { message: editInput }, { headers: { 'Authorization': user.token } })
 | 
				
			||||||
 | 
					            .then((_response) => {
 | 
				
			||||||
 | 
					                setEditing(false);
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					            .catch((error) => {
 | 
				
			||||||
 | 
					                setMessage(`<p class="form-error"><b>Erreur:</b> ${error.response.data.message}</p>`);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const editComment = () => {
 | 
				
			||||||
 | 
					        setEditing(true);
 | 
				
			||||||
 | 
					        setMessage("");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
        <div ref={ref} className="CommentCard col-24">
 | 
					        <div ref={ref} className="CommentCard col-24">
 | 
				
			||||||
            <div className="CommentCard__container">
 | 
					            <div className="CommentCard__container">
 | 
				
			||||||
@@ -40,13 +68,33 @@ const CommentCard = forwardRef((props, ref) => {
 | 
				
			|||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
                <div className="row">
 | 
					                <div className="row">
 | 
				
			||||||
                    <div className="col-24">
 | 
					                    <div className="col-24">
 | 
				
			||||||
                        <p className="CommentCard__message">
 | 
					                        {
 | 
				
			||||||
                            {props.message}
 | 
					                            (!isEditing) ?
 | 
				
			||||||
                        </p>
 | 
					                                <Fragment>
 | 
				
			||||||
                        {(isAuth && user.name === props.user.name) && 
 | 
					                                    <p className="CommentCard__message">
 | 
				
			||||||
                            <p style={{ fontSize: '15px', margin: '15px 0 0 0', fontStyle: 'italic' }}>
 | 
					                                        {editInput}
 | 
				
			||||||
                                <a onClick={deleteCommentById} href="#">supprimer le commentaire</a>
 | 
					                                    </p>
 | 
				
			||||||
                            </p>
 | 
					                                    {(isAuth && user.name === props.user.name) && 
 | 
				
			||||||
 | 
					                                        <p style={{ fontSize: '15px', margin: '15px 0 0 0', fontStyle: 'italic' }}>
 | 
				
			||||||
 | 
					                                            <a onClick={deleteCommentById} href="#">supprimer</a>
 | 
				
			||||||
 | 
					                                             - 
 | 
				
			||||||
 | 
					                                            <a style={{ cursor: 'pointer' }} onClick={editComment}>modifier</a>
 | 
				
			||||||
 | 
					                                        </p>
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                </Fragment>
 | 
				
			||||||
 | 
					                            : 
 | 
				
			||||||
 | 
					                                <form onSubmit={handleSubmit}>
 | 
				
			||||||
 | 
					                                    <div className="form-group FunctionComments__post-group">
 | 
				
			||||||
 | 
					                                        <label className="form-label" htmlFor="commentEdit">Modifier le commentaire :</label>   
 | 
				
			||||||
 | 
					                                        <textarea style={{ height: 'auto' }} value={editInput} onChange={handleChange} name="commentEdit" id="commentEdit" className="form-control" rows="5" placeholder="Idée d'amélioration, avis, remarque, partage d'expérience personnel, ..."></textarea>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div className="form-group" style={{ marginTop: '0.7em' }}>
 | 
				
			||||||
 | 
					                                        <button type="submit" className="btn btn-dark">Envoyer</button>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div className="text-center">
 | 
				
			||||||
 | 
					                                        {htmlParser(message)}
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </form>
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user