UserInfoButton.jsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { store } from "../../../store";
  2. import { privateMessage } from "../../../reducers/userDataReducer";
  3. import { useSelector } from "react-redux";
  4. import { StyledAvatar } from "../messageForm/StyledAvatar";
  5. import { Avatar } from "@mui/material";
  6. export const UserInfoButton = ({item, i}) => {
  7. const SERVER_URL = process.env.REACT_APP_SERVER_URL
  8. const user = useSelector(state => state.getUserSocketReducer.socketUserData)
  9. const socket = useSelector(state => state.getUserSocketReducer.socket)
  10. const isPrivatChat = useSelector(state => state.userDataReducer.isPrivatChat)
  11. const chatId = useSelector(state => state.userDataReducer.toUser.socketId)
  12. const storeUserAvatar = useSelector(state => state.userDataReducer.avatar)
  13. let userAvatarUrl = storeUserAvatar || user.avatar;
  14. return (
  15. <div
  16. className={isPrivatChat&&(chatId === item.socketId)? 'online active' :'online' }
  17. onClick={() => {
  18. console.log(item.socketId, chatId)
  19. store.dispatch(privateMessage({toUser: item}))
  20. socket.emit('privat chat', {
  21. user,
  22. to: item.socketId,
  23. toUser: item
  24. })
  25. }
  26. }
  27. >
  28. <div style={{color: item.color}}>
  29. <StyledAvatar key={i} sx={{ marginRight:2}}
  30. >
  31. <Avatar
  32. src= {SERVER_URL + '/'+ item?.avatar}
  33. sx={{ alignSelf: 'flex-end'}}
  34. >
  35. {item?.userName.slice(0, 1)}
  36. </Avatar>
  37. </StyledAvatar>
  38. {item.userName}
  39. </div>
  40. <span style={{color: 'green'}}>
  41. online
  42. </span>
  43. </div>
  44. )
  45. }