import React from 'react';
import Button from '@material-ui/core/Button';
import TextField from '@material-ui/core/TextField';
import SaveIcon from '@material-ui/icons/Save';
import { makeStyles } from '@material-ui/core/styles';
import AddAPhotoIcon from '@material-ui/icons/AddAPhoto';
import './message.scss';
import {useState, useEffect} from "react";
import Avatar from '@material-ui/core/Avatar';
import {useDispatch, useSelector, connect} from "react-redux";
import {useParams} from 'react-router-dom';
import Card from '@material-ui/core/Card';
import CardActionArea from '@material-ui/core/CardActionArea';
import CardContent from '@material-ui/core/CardContent';
import CardMedia from '@material-ui/core/CardMedia';
import {actionAdMessage} from '../../App.js';
const useStyles = makeStyles((theme) => ({
messageList: {
width: "70%",
maxWidth: "70%",
backgroundColor: '#ccd7e3',
display: 'flex',
flexDirection: 'column-reverse',
},
userList: {
width: "30%",
marginRight: "5px",
minWidth: "max-content",
backgroundColor: '#ccd7e3'
},
MessageInput:{
margin: '10px'
},
user:{
display: 'flex',
height: '60px',
backgroundColor: '#88a0b9',
margin: '10px',
alignItems: 'center',
padding: '5px'
},
avatar:{
marginRight: '5px'
},
messageCard:{
maxWidth: '80%',
margin: '10px',
width: 'max-content',
padding: '4px'
},
myUserColor:{
backgroundColor: "#848bd8",
maxWidth: '80%',
margin: '10px',
marginRight: '-6px',
marginLeft: '-5px',
width: 'max-content',
padding: '4px',
},
userColor:{
backgroundColor: "#50905f",
maxWidth: '80%',
maxHeight: '21px',
margin: '10px',
marginRight: '-6px',
width: 'max-content',
padding: '4px',
},
UserDiv:{
display: 'flex',
},
myUserDiv:{
display: 'flex',
flexDirection: 'row-reverse',
marginRight: '15px',
}
}));
function MyMessage({user, message}) {
const login = useSelector(state => state.auth?.payload?.sub?.login)
const classes = useStyles();
return(
{user}
{message}
)
}
const Users = ({myOnclick, user})=>{
const classes = useStyles();
return(
myOnclick(user._id)}>
{user.login}
)
}
const Message = ({loadData,dataMyUser ,sendMessage, myMessage=[],forMeMessage=[] , myNewMessage=[]})=>{
const classes = useStyles();
const dispatch = useDispatch();
const id = useSelector(state => state.auth?.payload?.sub?.id)
const [time, setTime] = useState(true);
const [users, setUsers] = useState([]);
useEffect(() => {
if(forMeMessage.length>0||myMessage.length>0){
let allmessages=[]
if(forMeMessage.length>0){
allmessages = [...forMeMessage]
}
if(myMessage.length>0){
allmessages = [...myMessage]
}
if(forMeMessage.length>0&&myMessage.length>0){
allmessages = [...forMeMessage,...myMessage]
}
if(allmessages.length>0){
let usersList = allmessages.map((el)=>{
if(el.to){
return{login:el.to.login, _id:el.to._id}
}
return{login:el.owner.login, _id:el.owner._id}
} )
usersList = usersList.reduce((a, b) => {
if (!a.find(v => v._id == b._id)) {
a.push(b);
}
return a;
}, []);
setUsers(usersList)
}
}
},[forMeMessage,myMessage])
const [send, setSend] = useState(false);
useEffect(() => {
loadData(id)
},[send])
const [message, setMessage] = useState('');
const [iduser, setIduser]= useState("");
const [messageArr, setMessageArr] = useState([]);
const [allmessage, setAllMessage] = useState([]);
const onclickSend =()=>{
if(message){
dispatch(actionAdMessage({text:message, to:{_id:iduser}}))
setSend(!send)
setMessage('')
}
}
const upDate=()=>{
let usersMessage = []
forMeMessage.map((el)=>{
if(el.owner._id===iduser){
usersMessage.push(el)
}
})
myMessage.map((el)=>{
if(el.to._id===iduser){
usersMessage.push(el)
}
})
const sort = usersMessage.sort((a,b)=>a.createdAt-b.createdAt)
setMessageArr(sort)
setAllMessage([...forMeMessage,...myMessage])
}
useEffect(() => {
setTimeout(()=>{
dataMyUser(id)
setTime(!time);
},3000)
},[time])
const onclickUser =(id)=>{
setIduser(id)
let usersMessage = []
forMeMessage.map((el)=>{
if(el.owner._id===id){
usersMessage.push(el)
}
})
myMessage.map((el)=>{
if(el.to._id===id){
usersMessage.push(el)
}
})
const sort = usersMessage.sort((a,b)=>a.createdAt-b.createdAt)
setMessageArr(sort)
}
if(allmessage.length
{users.map((el)=>)}
setMessage(e.target.value)}
className={classes.MessageInput}
id="standard-basic"
label="Message" />
{messageArr.map((el)=>)}
);
}
export default Message