From 9874f07209d5d221e7eec4183a8a89595dbd366e Mon Sep 17 00:00:00 2001 From: Guillaume Dorce Date: Wed, 28 Sep 2022 22:51:09 +0200 Subject: [PATCH] delete message --- client/src/components/Message.tsx | 16 ++++---- client/src/components/MessageWrapper.tsx | 2 +- client/src/components/PopupMessage.tsx | 42 ++++++++++++++++----- client/src/controllers/MessageController.ts | 3 +- client/tsconfig.json | 3 ++ client/vite.config.ts | 1 + 6 files changed, 46 insertions(+), 21 deletions(-) diff --git a/client/src/components/Message.tsx b/client/src/components/Message.tsx index 78737a4..483eb67 100644 --- a/client/src/components/Message.tsx +++ b/client/src/components/Message.tsx @@ -29,21 +29,21 @@ const Likes = ({ likes }: {likes: number}) => { ); }; -const Message = ({ text = '', user, date, image = '', id }: any) => { +const Message = ({ message }: any) => { return ( <> -
- {user && } +
+ {message.author && }
- {user.firstName} {user.lastName} + {message.author.firstName} {message.author.lastName}
- +
- - -
{date}
+ + +
{message.createdAt}
diff --git a/client/src/components/MessageWrapper.tsx b/client/src/components/MessageWrapper.tsx index 259abf3..55e10d9 100644 --- a/client/src/components/MessageWrapper.tsx +++ b/client/src/components/MessageWrapper.tsx @@ -28,7 +28,7 @@ const MessageWrapper = () => { return (
{messages.isLoading ? '' : messages.data?.map((message: any) => ( - + ))}
); diff --git a/client/src/components/PopupMessage.tsx b/client/src/components/PopupMessage.tsx index c940a62..060c3c4 100644 --- a/client/src/components/PopupMessage.tsx +++ b/client/src/components/PopupMessage.tsx @@ -1,22 +1,42 @@ import { useEffect, useState } from 'react'; import { FaEllipsisH } from 'react-icons/fa'; import Modal from './Modal'; +import { deleteMessage } from '@controllers/MessageController'; +import { useQueryClient } from '@tanstack/react-query'; const DeleteModal = ({ - id, + authorId, + messageId, showDelete, setShowDelete, }: { - id: string; + authorId: string; + messageId: string; showDelete: boolean; setShowDelete: (showDelete: boolean) => void; }) => { + const queryClient = useQueryClient(); + + const handleDelete = async () => { + try { + const response = await deleteMessage(messageId); + if (response.status === 200) { + console.log(await response.json()); + queryClient.invalidateQueries(['messages']); + setShowDelete(false); + } + } catch (error) { + console.error(error); + setShowDelete(false); + } + }; + return (
Voulez vous vraiment supprimer ce message ?
@@ -31,11 +51,13 @@ const DeleteModal = ({ }; const EditModal = ({ - id, + authorId, + messageId, showEdit, setShowEdit, }: { - id: string; + authorId: string; + messageId: string; showEdit: boolean; setShowEdit: (showEdit: boolean) => void; }) => { @@ -46,20 +68,20 @@ const EditModal = ({ ); }; -const PopupMessage = ({ id }: { id: string }) => { +const PopupMessage = ({ message }: { message: any }) => { const [show, setShow] = useState(false); const [showEdit, setShowEdit] = useState(false); const [showDelete, setShowDelete] = useState(false); useEffect(() => { const handleClick = (e: any) => { - if (e.target.closest('#messageId' + id) === null) { + if (e.target.closest('#messageId' + message.id) === null) { setShow(false); } }; document.addEventListener('click', handleClick); - }, [id]); + }, [message.id]); return ( <> @@ -98,8 +120,8 @@ const PopupMessage = ({ id }: { id: string }) => {
- - + + ); }; diff --git a/client/src/controllers/MessageController.ts b/client/src/controllers/MessageController.ts index 6288c29..39efd9a 100644 --- a/client/src/controllers/MessageController.ts +++ b/client/src/controllers/MessageController.ts @@ -36,13 +36,12 @@ const newMessage = async (data: FormData) => { const deleteMessage = async (id: string) => { const token = new Cookies().get('token'); - const response = await fetch(`/api/posts/${id}`, { + return fetch(`/api/posts/delete/${id}`, { method: 'DELETE', headers: { 'Authorization': `Bearer ${token}` }, }); - return response.json(); }; const editMessage = async (id: string, data: FormData) => { diff --git a/client/tsconfig.json b/client/tsconfig.json index 2700c4a..86fab38 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -27,6 +27,9 @@ "@components/*": [ "src/components/*" ], + "@controllers/*": [ + "src/controllers/*" + ], } }, "include": [ diff --git a/client/vite.config.ts b/client/vite.config.ts index 06c6b7e..d804fd2 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -24,6 +24,7 @@ export default defineConfig({ '@components': path.resolve(__dirname, './src/components'), '@styles': path.resolve(__dirname, './src/assets/styles'), '@layouts': path.resolve(__dirname, './src/layouts'), + '@controllers': path.resolve(__dirname, './src/controllers'), } }, });