|
@@ -1,11 +1,12 @@
|
|
import { Avatar, Box, StyledBadge } from '@mui/material';
|
|
import { Avatar, Box, StyledBadge } from '@mui/material';
|
|
import { dateFormat } from '../utils/dateFormat';
|
|
import { dateFormat } from '../utils/dateFormat';
|
|
import { useSelector } from 'react-redux';
|
|
import { useSelector } from 'react-redux';
|
|
-import { useRef, useEffect} from 'react';
|
|
|
|
|
|
+import { useRef, useEffect, useState} from 'react';
|
|
import { scrollToBottom } from '../utils/scrollToBottom';
|
|
import { scrollToBottom } from '../utils/scrollToBottom';
|
|
import { useDispatch } from 'react-redux';
|
|
import { useDispatch } from 'react-redux';
|
|
import { editMessage } from '../../../reducers/messageReducer';
|
|
import { editMessage } from '../../../reducers/messageReducer';
|
|
import { StyledAvatar } from './StyledAvatar';
|
|
import { StyledAvatar } from './StyledAvatar';
|
|
|
|
+import { MessageEditorMenu } from '../MessageEditorMenu.jsx';
|
|
|
|
|
|
export const MessageForm = () => {
|
|
export const MessageForm = () => {
|
|
|
|
|
|
@@ -22,16 +23,36 @@ export const MessageForm = () => {
|
|
|
|
|
|
const regYoutube = /http(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-\_]*)(&(amp;)?[\w\?=]*)?/; //for youtube video
|
|
const regYoutube = /http(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-\_]*)(&(amp;)?[\w\?=]*)?/; //for youtube video
|
|
|
|
|
|
|
|
+
|
|
|
|
+ const [isMessageClick, setIsMessageClick] = useState(false); // add to reducer
|
|
|
|
+
|
|
|
|
+
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
scrollToBottom(endMessages)
|
|
scrollToBottom(endMessages)
|
|
}, [startMessages, usersOnline]);
|
|
}, [startMessages, usersOnline]);
|
|
|
|
|
|
return (
|
|
return (
|
|
- <Box className='messageBox'>
|
|
|
|
|
|
+ <Box className='messageBox'>
|
|
{
|
|
{
|
|
startMessages.map((item, i) =>
|
|
startMessages.map((item, i) =>
|
|
<div key={i} className={
|
|
<div key={i} className={
|
|
- (item.userName === user.userName)? 'message myMessage' :'message'}>
|
|
|
|
|
|
+ (item.userName === user.userName)? 'message myMessage' :'message'}
|
|
|
|
+ onClick = {(e) => {
|
|
|
|
+ if(e.target.className.includes('myMessage')){
|
|
|
|
+ e.currentTarget.className += ' editMessage'
|
|
|
|
+ startMessages.map( item => {
|
|
|
|
+ if((item.userName === user.userName) && (item.text === e.target.textContent)){
|
|
|
|
+ console.log('edit message',e.target.textContent )
|
|
|
|
+ setIsMessageClick(true)
|
|
|
|
+ //dispatch(editMessage({editMessage: e.target.textContent}))
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ })}
|
|
|
|
+ }}
|
|
|
|
+ >
|
|
|
|
+
|
|
|
|
+ { isMessageClick ? <MessageEditorMenu/> : ""}
|
|
|
|
+
|
|
<StyledAvatar
|
|
<StyledAvatar
|
|
anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
|
|
anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
|
|
variant = {userNamesOnlineSet.has(item.userName)? 'dot' : ''}
|
|
variant = {userNamesOnlineSet.has(item.userName)? 'dot' : ''}
|
|
@@ -48,28 +69,22 @@ export const MessageForm = () => {
|
|
}
|
|
}
|
|
:
|
|
:
|
|
{}
|
|
{}
|
|
- }>
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ >
|
|
{item?.userName.slice(0, 1)}
|
|
{item?.userName.slice(0, 1)}
|
|
</Avatar>
|
|
</Avatar>
|
|
|
|
+
|
|
|
|
+
|
|
</StyledAvatar>
|
|
</StyledAvatar>
|
|
<div
|
|
<div
|
|
key={item._id}
|
|
key={item._id}
|
|
- onClick = {(e) => {
|
|
|
|
- if(e.target.className.includes('myMessage')){
|
|
|
|
- e.currentTarget.className += ' editMessage'
|
|
|
|
- startMessages.map( item => {
|
|
|
|
- if((item.userName === user.userName) && (item.text === e.target.textContent)){
|
|
|
|
- console.log('edit message',e.target.textContent )
|
|
|
|
- dispatch(editMessage({editMessage: e.target.textContent}))
|
|
|
|
- }
|
|
|
|
- })}
|
|
|
|
- }}
|
|
|
|
|
|
+
|
|
className={
|
|
className={
|
|
(item.userName === user.userName)? 'message myMessage' :'message'}>
|
|
(item.userName === user.userName)? 'message myMessage' :'message'}>
|
|
|
|
|
|
{
|
|
{
|
|
item.text.match(regYoutube) ?
|
|
item.text.match(regYoutube) ?
|
|
-
|
|
|
|
<iframe
|
|
<iframe
|
|
width="350"
|
|
width="350"
|
|
height="220"
|
|
height="220"
|
|
@@ -82,7 +97,9 @@ export const MessageForm = () => {
|
|
:
|
|
:
|
|
<p>{item.text}</p>
|
|
<p>{item.text}</p>
|
|
}
|
|
}
|
|
|
|
+
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
<div className={
|
|
<div className={
|
|
(item.userName === user.userName)? 'myDate' :'date'}>
|
|
(item.userName === user.userName)? 'myDate' :'date'}>
|
|
{dateFormat(item).time}
|
|
{dateFormat(item).time}
|