diff --git a/client/src/components/Like.tsx b/client/src/components/Like.tsx index 4fa9a56..e5c47a2 100644 --- a/client/src/components/Like.tsx +++ b/client/src/components/Like.tsx @@ -1,15 +1,39 @@ import { FaThumbsUp } from 'react-icons/fa'; import { likePost, unlikePost } from '@controllers/LikeController'; -import { useMutation, useQueryClient } from '@tanstack/react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { toastError, toastSuccess } from '@controllers/Toasts'; +import { useEffect, useState } from 'react'; +import { getMeInfo } from '@controllers/UserController'; -const Like = ({ messageId, isLiked }: { messageId: string; isLiked: boolean }) => { +const Like = ({ message }: { message: any}) => { const queryClient = useQueryClient(); + const [liked, setLiked] = useState(false); + const me = useQuery(['me'], getMeInfo, { + onSuccess: (data) => { + return data; + }, + onError: (error) => { + toastError(error as string); + }, + }); - const mutateLike = useMutation(isLiked ? unlikePost : likePost, { + useEffect(() => { + if (message.likedBy.some((like: any) => like.userId === me.data?.id)) { + setLiked(true); + } + }, [message]); + + const mutateLike = useMutation(liked ? unlikePost : likePost, { onSuccess: (data) => { queryClient.invalidateQueries(['messages']); - isLiked ? toastSuccess('Message aimé') : null; + if (data.message === 'Post liked') { + setLiked(true); + toastSuccess('Message aimé'); + } else { + setLiked(false); + toastSuccess('Message non aimé'); + } + toastSuccess(data.message); }, onError: (error) => { toastError(error as string); @@ -17,7 +41,7 @@ const Like = ({ messageId, isLiked }: { messageId: string; isLiked: boolean }) = }); const like = () => { - mutateLike.mutate(messageId); + mutateLike.mutate(message.id); }; return ( @@ -26,7 +50,7 @@ const Like = ({ messageId, isLiked }: { messageId: string; isLiked: boolean }) = onClick={like} name="like" > - + Aimer ); diff --git a/client/src/components/Message.tsx b/client/src/components/Message.tsx index 26e4378..5f17e68 100644 --- a/client/src/components/Message.tsx +++ b/client/src/components/Message.tsx @@ -6,6 +6,7 @@ import { useQuery } from '@tanstack/react-query'; import { toastError } from '@controllers/Toasts'; import User from './User'; import Image from './Image'; +import { useState } from 'react'; const Text = ({ text }: { text: string }) => { if (text === '') { @@ -52,14 +53,7 @@ const Message = ({ message }: any) => { {message.edited &&
Modifié
} - {me.data?.id === message.author.id ? null : ( - 0 && message.likedBy.find((like: any) => like.userId === me.data?.id) ? true : false - } - /> - )} + {me.data?.id === message.author.id ? null : }