diff --git a/client/src/components/Message.tsx b/client/src/components/Message.tsx
index d4702f9..dbf1e65 100644
--- a/client/src/components/Message.tsx
+++ b/client/src/components/Message.tsx
@@ -38,7 +38,7 @@ const Message = ({ message }: any) => {
return (
<>
{message.author &&
}
diff --git a/client/src/components/ScrollToBottom.tsx b/client/src/components/ScrollToBottom.tsx
index 6274c68..de73a92 100644
--- a/client/src/components/ScrollToBottom.tsx
+++ b/client/src/components/ScrollToBottom.tsx
@@ -21,7 +21,8 @@ const ScrollToBottom = ({ children, className = '' }: { children: ReactNode; cla
setShow(false);
}
});
- container?.addEventListener('DOMNodeInserted', () => {
+ container?.addEventListener('DOMNodeInserted', (e) => {
+ if (!(e.target as Element).classList.contains('message')) return;
if (node?.getBoundingClientRect() && node.getBoundingClientRect().y >= window.innerHeight) {
node?.scrollIntoView({ behavior: 'smooth' });
}
diff --git a/client/src/components/User.tsx b/client/src/components/User.tsx
index aee8875..faa8ce0 100644
--- a/client/src/components/User.tsx
+++ b/client/src/components/User.tsx
@@ -1,28 +1,84 @@
-import { useState } from 'react';
+import { useEffect, useState } from 'react';
import Modal from './Modal';
const User = ({ author }: any) => {
const [show, setShow] = useState(false);
+ const [popupPos, setPopupPos] = useState({ posX: 0, posY: 0 });
+ const [messageId, setMessageId] = useState('0');
+
+ 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 = (e: any) => {
+ e.preventDefault();
+ setMessageId(e.target.closest('.message').id.slice(9));
+
+ setPopupPos({ posX: e.clientX, posY: e.clientY });
+ };
return (
- <>
-