index.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import List from '@mui/material/List';
  2. import ListItem from '@mui/material/ListItem';
  3. import ListItemText from '@mui/material/ListItemText';
  4. import ListItemAvatar from '@mui/material/ListItemAvatar';
  5. import Avatar from '@mui/material/Avatar';
  6. import Divider from '@mui/material/Divider';
  7. import ContentCopyIcon from '@mui/icons-material/ContentCopy';
  8. import { CopyToClipboard } from 'react-copy-to-clipboard';
  9. import { makeStyles } from '@material-ui/core'
  10. import AlertInfo from '../../../../../../reusableComponents/AlertInfo';
  11. import { timeStampEU,firstLetter,copied,prodBaseURL } from '../../../../../../../helpers'
  12. import { TMessages } from '../../../../../../../typescript/redux/messages/types'
  13. const useStyles = makeStyles({
  14. listItem: {
  15. '&:hover': {
  16. backgroundColor: '#f0f0f0',
  17. }
  18. },
  19. copyIcon: {
  20. color: '#54b0fc',
  21. cursor: 'pointer',
  22. '&:hover': {
  23. color: '#016cc3'
  24. },
  25. },
  26. })
  27. const TextList = ({ messagesMemo }: { messagesMemo: TMessages }) => {
  28. const classes = useStyles()
  29. const filteredMessagesMemo = messagesMemo.filter(({type}) => type === 'text')
  30. return filteredMessagesMemo.length > 0 ?(
  31. <List>
  32. {filteredMessagesMemo.map(({ message, createdAt, lastName, name, color, avatarUrl }) =>
  33. <div key={createdAt}>
  34. <ListItem alignItems="flex-start" className={classes.listItem}>
  35. <ListItemAvatar>
  36. <Avatar alt={name} src={avatarUrl?`${prodBaseURL}/${avatarUrl}`:undefined}
  37. sx={{ background: color, width: 38, height: 38}}>
  38. {`${firstLetter(name)}${firstLetter(lastName)}`}
  39. </Avatar>
  40. </ListItemAvatar>
  41. <ListItemText style={{ wordBreak: 'break-word',marginRight:2 }} primary={message}
  42. secondary={timeStampEU(createdAt)} secondaryTypographyProps={{color: '#020202',paddingTop:0.5}}
  43. />
  44. <CopyToClipboard onCopy={() => copied('Message')} text={message}>
  45. <ContentCopyIcon className={classes.copyIcon} fontSize='large' />
  46. </CopyToClipboard>
  47. </ListItem>
  48. <Divider variant="inset" />
  49. </div>)}
  50. </List>
  51. ): <AlertInfo name='You do not have Text yet!'/>
  52. }
  53. export default TextList