index.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { makeStyles,Typography } from '@material-ui/core'
  2. import ListItemButton from '@mui/material/ListItemButton';
  3. import Avatar from '@mui/material/Avatar';
  4. import ListItemText from '@mui/material/ListItemText';
  5. import ListItemIcon from '@mui/material/ListItemIcon';
  6. import { TChat } from '../../../../../../typescript/redux/chats/types';
  7. import { firstLetter,slicedWord,timeStampEU,prodBaseURL } from '../../../../../../helpers';
  8. const useStyles = makeStyles({
  9. listItemInnerText: {
  10. display: 'flex',
  11. alignContent: 'center',
  12. alignItems: 'center',
  13. flexWrap: 'nowrap',
  14. },
  15. listItem_iconAvatar: {
  16. marginRight:10
  17. },
  18. listItem_iconRight: {
  19. marginRight: 10,
  20. },
  21. listItem_icon_time: {
  22. fontSize: 12,
  23. marginLeft: 5,
  24. paddingBottom:25,
  25. color: '#1b1b1b'
  26. },
  27. })
  28. interface IChatItem {
  29. chat: TChat,
  30. handleListItemClick: (companionId: string) => void,
  31. }
  32. const ChatItem = ({chat,handleListItemClick}:IChatItem) => {
  33. const classes = useStyles()
  34. const {name,lastName,avatarUrl,color,companionId,lastMessage,lastMessageCreatedAt,createdAt} = chat
  35. return (
  36. <ListItemButton onClick={() => handleListItemClick(companionId)}>
  37. <ListItemIcon className={classes.listItem_iconAvatar}>
  38. <Avatar alt={name} src={avatarUrl?`${prodBaseURL}/${avatarUrl}`:undefined}
  39. sx={{ background: color, width: 54, height: 54 }}>
  40. {!avatarUrl&&`${firstLetter(name)}${firstLetter(lastName)}`}
  41. </Avatar>
  42. </ListItemIcon>
  43. <ListItemText primary={`${firstLetter(name)}${slicedWord(name, 15, 1)}
  44. ${firstLetter(lastName)}${slicedWord(lastName, 15, 1)}`}
  45. secondary={`${lastMessage ? slicedWord(lastMessage, 35) :
  46. `${firstLetter(name)}${slicedWord(name, 8, 1)} joined Telegram`}`}/>
  47. <ListItemIcon className={classes.listItem_iconRight}>
  48. <Typography className={classes.listItem_icon_time} variant="h6" color="initial">
  49. {timeStampEU(lastMessageCreatedAt?lastMessageCreatedAt:createdAt)}
  50. </Typography>
  51. </ListItemIcon>
  52. </ListItemButton>
  53. );
  54. }
  55. export default ChatItem