index.tsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { useSelector } from 'react-redux';
  2. import Paper from '@mui/material/Paper';
  3. import MenuList from '@mui/material/MenuList';
  4. import MenuItem from '@mui/material/MenuItem';
  5. import ListItemText from '@mui/material/ListItemText';
  6. import ListItemIcon from '@mui/material/ListItemIcon';
  7. import PhoneIcon from '@mui/icons-material/Phone';
  8. import NotificationsIcon from '@mui/icons-material/Notifications';
  9. import SortIcon from '@mui/icons-material/Sort';
  10. import Switch from '@mui/material/Switch';
  11. import Divider from '@mui/material/Divider';
  12. import AlternateEmailIcon from '@mui/icons-material/AlternateEmail';
  13. import { CopyToClipboard } from 'react-copy-to-clipboard';
  14. import { makeStyles } from '@material-ui/core'
  15. import { getChat } from '../../../../../redux/chat/selector'
  16. import { muteChat,sortChat } from '../../../../../api-data'
  17. import { copied,firstLetter,slicedWord } from '../../../../../helpers';
  18. const useStyles = makeStyles({
  19. listIcon: {
  20. marginRight: 15,
  21. },
  22. })
  23. const label = { inputProps: { 'aria-label': 'Switch demo' } };
  24. const ProfileMenu = ({disabled}:{disabled:boolean}) => {
  25. const classes = useStyles()
  26. const { number, mute,sort,companionId,originalName,originalLastName } = useSelector(getChat)
  27. const handleMute = () => muteChat(companionId)
  28. const handleSort = () => sortChat(companionId)
  29. const credentials = `${firstLetter(originalName)}${slicedWord(originalName, 15, 1)}
  30. ${firstLetter(originalLastName)}${slicedWord(originalLastName, 15, 1)}`
  31. return (
  32. <Paper>
  33. <MenuList>
  34. <CopyToClipboard onCopy={() => copied('Number')} text={number}>
  35. <MenuItem>
  36. <ListItemIcon className={classes.listIcon}>
  37. <PhoneIcon fontSize="medium" />
  38. </ListItemIcon>
  39. <ListItemText primary={number} secondary='Copy number' />
  40. </MenuItem>
  41. </CopyToClipboard>
  42. <Divider variant="inset" />
  43. <CopyToClipboard onCopy={() => copied('Username')} text={credentials}>
  44. <MenuItem style={{cursor:'pointer'}}>
  45. <ListItemIcon className={classes.listIcon}>
  46. <AlternateEmailIcon fontSize="medium" />
  47. </ListItemIcon>
  48. <ListItemText primary={credentials} secondary='Username' />
  49. </MenuItem>
  50. </CopyToClipboard>
  51. <Divider variant="inset"/>
  52. <MenuItem style={{cursor:'default'}}>
  53. <ListItemIcon className={classes.listIcon}>
  54. <NotificationsIcon fontSize="medium" />
  55. </ListItemIcon>
  56. <ListItemText primary='Notification' />
  57. <Switch style={{ cursor:'pointer'}} onClick={handleMute} {...label} checked={!mute} />
  58. </MenuItem>
  59. <Divider variant="inset" />
  60. <MenuItem disabled={disabled} style={{cursor:'default'}}>
  61. <ListItemIcon className={classes.listIcon}>
  62. <SortIcon fontSize="medium" />
  63. </ListItemIcon>
  64. <ListItemText primary={`Sort by Date`} />
  65. <Switch style={{ cursor:'pointer'}} onClick={handleSort} {...label} checked={sort} />
  66. </MenuItem>
  67. </MenuList>
  68. </Paper>
  69. );
  70. }
  71. export default ProfileMenu