index.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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 LibraryMusicIcon from '@mui/icons-material/LibraryMusic';
  7. import Divider from '@mui/material/Divider';
  8. import { makeStyles } from '@material-ui/core'
  9. import AlertInfo from '../../../../../reusableComponents/AlertInfo';
  10. import { timeStampEU,prodAwsS3,firstLetter } from '../../../../../../helpers'
  11. import { TMessages } from '../../../../../../typescript/redux/messages/types'
  12. const useStyles = makeStyles({
  13. folderIcon: {
  14. margin: 'auto 0px',
  15. color: 'rgba(0, 0, 0, 0.5)',
  16. },
  17. listItem: {
  18. cursor:'pointer',
  19. '&:hover': {
  20. backgroundColor: '#f0f0f0',
  21. }
  22. },
  23. })
  24. interface IAudioList {
  25. openPinned: boolean,
  26. filteredAndSorted: TMessages,
  27. handleScrollToTheMessage: (_id:string) => void,
  28. }
  29. const AudioList = ({ filteredAndSorted,handleScrollToTheMessage,openPinned }: IAudioList) => {
  30. const classes = useStyles()
  31. return filteredAndSorted.length > 0 ?(
  32. <List>
  33. {filteredAndSorted.map(({ message, createdAt, fullType,_id,name,avatarUrl,lastName,color }) =>
  34. <div key={createdAt}>
  35. <ListItem onClick={() => handleScrollToTheMessage(_id)}
  36. alignItems="flex-start" className={classes.listItem}>
  37. <ListItemAvatar>
  38. <Avatar alt={name} src={avatarUrl?`${prodAwsS3}/${avatarUrl}`:undefined}
  39. sx={{ background: color, width: 40, height: 40, marginRight:2 }}>
  40. {!avatarUrl&&`${firstLetter(name)}${firstLetter(lastName)}`}
  41. </Avatar>
  42. </ListItemAvatar>
  43. <ListItemText
  44. primary={fullType}
  45. secondary={timeStampEU(createdAt)}
  46. />
  47. <LibraryMusicIcon className={classes.folderIcon} fontSize='large'/>
  48. </ListItem>
  49. <Divider variant="inset"/>
  50. </div>)}
  51. </List>
  52. ): <AlertInfo name={`You do not have ${openPinned&&'Pinned'} Audio yet!`}/>
  53. }
  54. export default AudioList