import { useState } from 'react'; import Modal from './Modal'; import { getMeInfo, giveUserRights } from '@controllers/UserController'; import { toastError, toastSuccess } from '@controllers/Toasts'; import { useQuery, useQueryClient } from '@tanstack/react-query'; const User = ({ author }: any) => { const [show, setShow] = useState(false); const [popupPos, setPopupPos] = useState({ posX: 0, posY: 0 }); const [messageId, setMessageId] = useState('0'); const me = useQuery(['me'], getMeInfo, { onSuccess: (data) => { return data; }, onError: (error) => { toastError(error as string); }, }); const queryClient = useQueryClient(); function handleContextMenu(e: any) { if (messageId !== '0' && e.target.closest('.message')?.id.slice(9) !== messageId) { setPopupPos({ posX: 0, posY: 0 }); setMessageId('0'); document.removeEventListener('contextmenu', handleContextMenu); } } document.addEventListener('contextmenu', handleContextMenu); function handleClick(e: any) { if (e.target.closest('.user') === null) { setPopupPos({ posX: 0, posY: 0 }); setMessageId('0'); document.removeEventListener('click', handleClick); } } document.addEventListener('click', handleClick); const handleRightClick = async (e: any) => { e.preventDefault(); setMessageId(e.target.closest('.message').id.slice(9)); setPopupPos({ posX: e.clientX, posY: e.clientY }); }; async function changeRights() { setPopupPos({ posX: 0, posY: 0 }); setMessageId('0'); const response = await giveUserRights(author.id, author.role === 'USER' ? 'ADMIN' : 'USER'); if (response.error) { return toastError(response.error); } toastSuccess('User rights changed'); queryClient.invalidateQueries(['messages']); } const handleChange = (e: any) => { e.preventDefault(); toastSuccess('Infos personelles changées'); setShow(!show); }; return (