AdminUserInfiButton.jsx 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import {Button} from '@mui/material';
  2. import { store } from "../../../store";
  3. import { privateMessage } from "../../../reducers/userDataReducer";
  4. import { useSelector } from "react-redux";
  5. import { banUser } from '../service/banUser';
  6. import { muteUser } from '../service/muteUser';
  7. import './userInfo.scss';
  8. export const AdminUserInfiButton = ({item, i}) => {
  9. const user = useSelector(state => state.getUserSocketReducer.socketUserData)
  10. const usersOnline = useSelector(state => state.getUserSocketReducer.usersOnline);
  11. const socket = useSelector(state => state.getUserSocketReducer.socket)
  12. const isTabletorMobile = (window.screen.width < 730);
  13. const chatId = useSelector(state => state.userDataReducer.chatId)
  14. const isPrivatChat = useSelector(state => state.userDataReducer.isPrivatChat)
  15. const arrUsersOnline = usersOnline.map( i => i?.userName)
  16. const userNamesOnlineSet = new Set(arrUsersOnline)
  17. return(
  18. <div
  19. key={item._id}
  20. className={isPrivatChat&&(chatId === item._id)? 'online active' :'online' }
  21. onClick={() => {
  22. console.log(item._id, user._id)
  23. store.dispatch(privateMessage({chatId: item._id}))
  24. socket.emit('private message', {
  25. user,
  26. to: item._id,
  27. })
  28. }}>
  29. <div>
  30. {item.userName}
  31. </div>
  32. <div>
  33. {(user.userName === item.userName )?
  34. "admin"
  35. :
  36. <>
  37. <Button
  38. variant="contained"
  39. onClick={()=>{
  40. muteUser(item.userName, item?.isMutted, socket)
  41. }}
  42. sx={(isTabletorMobile)
  43. ?
  44. {height: '15px',
  45. maxWidth:'20px'}:
  46. {
  47. margin:'3px',
  48. height: '25px'}}>
  49. {item.isMutted
  50. ?
  51. 'unmute'
  52. : 'mute'}
  53. </Button>
  54. <Button
  55. variant="contained"
  56. onClick={()=>{
  57. banUser(item.userName, item.isBanned, socket)
  58. }}
  59. sx={(isTabletorMobile)
  60. ?
  61. {height: '15px',
  62. margin:'2px'} :
  63. {
  64. margin:'3px',
  65. height: '25px'}}
  66. >
  67. {item?.isBanned ? 'unban' : 'ban'}
  68. </Button>
  69. </>}
  70. </div>
  71. {
  72. userNamesOnlineSet.has(item.userName)?
  73. <span key={i} style={{color: 'green'}}>online</span>
  74. : ''
  75. }
  76. </div>
  77. )
  78. }