UserInfo.jsx 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import {Avatar} from '@mui/material';
  2. import { StyledAvatar } from '../messageForm/StyledAvatar';
  3. import { useSelector } from 'react-redux';
  4. import './userInfo.scss';
  5. import { useDispatch } from 'react-redux';
  6. import { getUserAvatar } from '../../../reducers/userDataReducer';
  7. <<<<<<< HEAD
  8. import { useState, useCallback } from 'react';
  9. =======
  10. import { useState } from 'react';
  11. >>>>>>> new-branch
  12. import { UserInfoButton } from '../generalChat/UserInfoButton';
  13. import { AdminUserInfiButton } from '../generalChat/AdminUserInfiButton';
  14. import { MainChatButtton } from '../generalChat/MainChatButtton';
  15. import { FindUserBox } from '../generalChat/FindUserBox';
  16. import './userInfo.scss';
  17. export const UserInfo = () => {
  18. const [displayType, setDisplayType] = useState('none');
  19. const dispatch = useDispatch();
  20. const loadAvatarHandler = () => {
  21. setDisplayType('block')
  22. setTimeout(() => {
  23. setDisplayType('none')
  24. }, 4000)
  25. }
  26. const SERVER_URL = process.env.REACT_APP_SERVER_URL
  27. const allUsers = useSelector(state => state.getUserSocketReducer.allUsers)
  28. const user = useSelector(state => state.getUserSocketReducer.socketUserData)
  29. const usersOnline = useSelector(state => state.getUserSocketReducer.usersOnline);
  30. const socket = useSelector(state => state.getUserSocketReducer.socket)
  31. const isTabletorMobile = (window.screen.width < 730);
  32. const storeUserAvatar = useSelector(state => state.userDataReducer.avatar)
  33. const chatId = useSelector(state => state.userDataReducer.chatId)
  34. const showUserInfoBox = useSelector(state => state.userDataReducer.showUserInfoBox)
  35. const newPrivateMessages = useSelector(state => state.getUserSocketReducer.newPrivateMessages)
  36. const newMessage = useSelector(state => state.getUserSocketReducer.newMessages)
  37. const friends = useSelector(state => state.getUserSocketReducer.friends)
  38. const friendsIds = friends.map(friend => friend._id)
  39. let userAvatarUrl = storeUserAvatar || user.avatar;
  40. const inputHandler = (e) => {
  41. const file = e.target.files[0]
  42. dispatch(getUserAvatar(file))
  43. setDisplayType('none')
  44. }
  45. console.log(user)
  46. // if(socket){
  47. // socket.on('my chats', (data)=> console.log('my chats', data))
  48. // }
  49. <<<<<<< HEAD
  50. console.log(usersOnline)
  51. =======
  52. >>>>>>> new-branch
  53. return (
  54. <>
  55. <h4 style={{color:'white'}}> Hello, {user.userName} </h4>
  56. <Avatar
  57. className={isTabletorMobile ? 'mobileAvatar' : 'pcUsersAvatar'} //add deleting function after update avatar
  58. onClick={() => loadAvatarHandler()}
  59. src={userAvatarUrl ? SERVER_URL +'/'+ userAvatarUrl : ""}
  60. >
  61. </Avatar>
  62. <div
  63. className={isTabletorMobile ? 'mobileUsersInfoBox' : 'pcUsersInfoBox'}
  64. style={showUserInfoBox && isTabletorMobile ? {'transform':'translate(-100%)'}:{ 'transform':'translate(0)'}}
  65. >
  66. <input
  67. type="file"
  68. accept="image/png, image/jpeg"
  69. name='file'
  70. style = {{
  71. display: displayType
  72. }}
  73. onChange = {e => inputHandler(e)}/>
  74. {friends.map((item, i) =>(user.userName !== item.userName) && <UserInfoButton item = {item} i = {i} key={i}
  75. /> )}
  76. <MainChatButtton/>
  77. <FindUserBox/>
  78. { user.isAdmin && !isTabletorMobile ?
  79. allUsers.map((item, i) =>
  80. (user.userName !== item?.userName)
  81. && <AdminUserInfiButton item={item} i={i} key={i}/>)
  82. :
  83. usersOnline.map((item, i) =>
  84. (user.userName !== item.userName && !friendsIds.includes(item._id) ) && <UserInfoButton item = {item} i = {i} key={i} />
  85. )
  86. }
  87. {
  88. newPrivateMessages.length > 0
  89. && newPrivateMessages.map((item, i) =>
  90. // <UserInfoButton item = {item} i = {i} key={i} />
  91. console.log(item)
  92. )
  93. }
  94. </div>
  95. <<<<<<< HEAD
  96. =======
  97. >>>>>>> new-branch
  98. </>
  99. )
  100. }