UserInfo.jsx 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import {Button,Avatar} from '@mui/material';
  2. import { useSelector } from 'react-redux';
  3. import { banUser } from '../service/banUser';
  4. import { muteUser } from '../service/muteUser';
  5. import './userInfo.scss';
  6. export const UserInfo = () => {
  7. //add foto loading function
  8. const allUsers = useSelector(state => state.getUserSocketReducer.allUsers)
  9. const user = useSelector(state => state.getUserSocketReducer.socketUserData)
  10. const usersOnline = [...new Set(useSelector(state => state.getUserSocketReducer.usersOnline))];//Set?
  11. const socket = useSelector(state => state.getUserSocketReducer.socket)
  12. const isTabletorMobile = (window.screen.width < 730);
  13. return (
  14. <>
  15. <Avatar sx={ (isTabletorMobile) ? {} :
  16. {
  17. bgcolor: 'grey',
  18. width: '100px',
  19. height: '100px',
  20. fontSize: 14,
  21. margin: '20px auto',
  22. cursor: 'pointer'
  23. }} />
  24. {user.isAdmin ?
  25. allUsers.map((item) =>
  26. <div
  27. key={item._id}
  28. className='online'>
  29. <div style={{color: (usersOnline.map(current => {
  30. if(item.userName === current.userName) {
  31. return current.color
  32. }}))
  33. }}>
  34. {item.userName}
  35. </div>
  36. <div>
  37. {(user.userName === item.userName )?
  38. "admin"
  39. :
  40. <>
  41. <Button
  42. variant="contained"
  43. onClick={()=>{
  44. muteUser(item.userName, item?.isMutted, socket)
  45. }}
  46. sx={(isTabletorMobile)
  47. ?
  48. {height: '15px',
  49. maxWidth:'20px'}:
  50. {
  51. margin:'3px',
  52. height: '25px'}}>
  53. {item.isMutted
  54. ?
  55. 'unmute'
  56. : 'mute'}
  57. </Button>
  58. <Button
  59. variant="contained"
  60. onClick={()=>{
  61. banUser(item.userName, item.isBanned, socket)
  62. }}
  63. sx={(isTabletorMobile)
  64. ?
  65. {height: '15px',
  66. margin:'2px'} :
  67. {
  68. margin:'3px',
  69. height: '25px'}}
  70. >
  71. {item?.isBanned ? 'unban' : 'ban'}
  72. </Button>
  73. </>}
  74. </div>
  75. {usersOnline.map((user, i) => {
  76. if(item.userName === user.userName){
  77. return <span key={i} style={{color: 'green'}}>online</span>
  78. }})}
  79. </div>)
  80. :
  81. usersOnline.map((item, i) =>
  82. <div
  83. key={i}
  84. className='online'>
  85. <div style={{color: item.color}}>
  86. {item.userName}
  87. </div>
  88. <span style={{color: 'green'}}>
  89. online
  90. </span>
  91. </div>)
  92. }
  93. </>
  94. )
  95. }