Profil supprimé | Allé, réponse pour ceux et celles qui comme moi ont pu galérer sur ça. Erreur basique en fait. J'ai juste eu à faire, avant de lancer une requête POST pour les likes sur la publication visée par son id, une requête GET, avec ce-dit id, mettre mes conditions, et au succès de chaque requête POST pour les likes, lancer une requête GET pour récupérer mon tableau d'objets des publications, et mettre ce résultat dans le state lui étant dédié. Fonctionne nickel.
Code :
- const [dataResultPosts, setDataResultPosts] = useState([])
- const likeSystem = async (e) => {
- // console.log(e.target.id)
- // let inputLike = document.querySelector('#likeInput')
- // inputLike.value = parseInt(inputLike.value) + 1
- // let iconLikeOn = document.querySelector('#iconLikeOn')
- // iconLikeOn.classList.add('iconLikeOn')
- let idUrl = e.target.id
- try {
- const response = await fetch(
- 'http://localhost:4200/api/ficheUser/post/one/' + idUrl,
- {
- method: 'GET',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: `Bearer ${authContext.token}`,
- },
- }
- )
- const dataResponse = await response.json()
- if (response.ok && dataResponse.likes === 0) {
- console.log('a')
- try {
- const response = await fetch(
- 'http://localhost:4200/api/ficheUser/post/like/' +
- idUrl,
- {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: `Bearer ${authContext.token}`,
- },
- body: JSON.stringify({
- userId: authContext.userId,
- likes: 1,
- }),
- }
- )
- const dataResponse = await response.json()
- if (response.ok) {
- fetch(urlGet, {
- method: 'GET',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: `Bearer ${authContext.token}`,
- },
- })
- .then((resp) => resp.json())
- .then((data) => setDataResultPosts([...data]))
- }
- } catch (err) {
- console.log(err)
- }
- } else if (response.ok && dataResponse.likes === 1) {
- console.log('b')
- try {
- const response = await fetch(
- 'http://localhost:4200/api/ficheUser/post/like/' +
- idUrl,
- {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: `Bearer ${authContext.token}`,
- },
- body: JSON.stringify({
- userId: authContext.userId,
- likes: 0,
- }),
- }
- )
- const dataResponse = await response.json()
- if (response.ok) {
- fetch(urlGet, {
- method: 'GET',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: `Bearer ${authContext.token}`,
- },
- })
- .then((resp) => resp.json())
- .then((data) => setDataResultPosts([...data]))
- }
- } catch (err) {
- console.log(err)
- }
- }
- } catch (err) {
- console.log(err)
- }
- }
-
- const GetPost = ({ infosPosts, infosPostOne }) => {
- return infosPosts.map((posts) => (
- <div className="allPostsAndModals" key={posts._id}>
- <div className="blockAuthor">
- <div className="divAuthor">
- <div className="pictureUserPost">
- <img src="" className="imageUser"></img>
- </div>
- <div className="nameAuthor">
- {posts.firstname} {posts.lastname}
- </div>
- <div className="divIconOptions">
- <div className="blockIconOptions">
- <p className="iconOption">
- <FontAwesomeIcon
- icon={faEllipsis}
- fontSize="36px"
- />
- </p>
- </div>
- </div>
- </div>
- </div>
- <div className="blockContentPost">
- <div className="paragraphContentPost">
- {posts.postContent} {posts.id}
- </div>
- </div>
- <div className="separator"></div>
- <div className="blockImagePost">
- <img
- className="imagePost"
- src={posts.imageUrlPostPicture || ' '}
- alt="photo profil utilisateur"
- ></img>
- </div>
- <div className="separator"></div>
- <div className="ContenairOptions">
- <div className="iconLikeOn">
- <button className="buttonLike" onClick={likeSystem}>
- <FontAwesomeIcon
- id={posts._id}
- icon={farThumbsUp}
- />
- </button>
- </div>
- {<p>{posts.likes} </p>}
- </div>
- </div>
- ))
- }
|
|