ChatListItem.jsx 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { Avatar, ListItem } from "@mui/material";
  2. import { useEffect } from "react";
  3. import { useContext, useState } from "react";
  4. import { connect } from "react-redux";
  5. import { Link } from "react-router-dom";
  6. import { backendURL } from "../../helpers/gql";
  7. import { ContextID } from "../../pages/MainPage";
  8. import { TimeLastMessage } from "../Time/Time";
  9. import { ChatListItemLink, ChatListItemContent, ChatListItemTitle, ChatListItemWrapper, ChatListLastMessage, ChatListItemHeader, ChatListItemFooter } from "./ChatListItem.style";
  10. import OwnerStar from "./icons8_star.png";
  11. import OnwerStarActive from "./icons8_star_white.png";
  12. const ChatListItem = ({chat, handleSetId, isActive, currUserId}) => {
  13. return (
  14. <ChatListItemWrapper isActive={isActive} onClick={() => handleSetId(chat._id)}>
  15. <ChatListItemLink to={`/main/${chat._id}`}>
  16. <Avatar
  17. alt={chat.title}
  18. src={`${backendURL}/${chat.avatar?.url || ''}`}
  19. sx={{ width: 45, height: 45, mr: '20px'}}
  20. />
  21. <ChatListItemContent>
  22. <ChatListItemHeader>
  23. <ChatListItemTitle isActive={isActive}>{chat.title}
  24. {currUserId === chat?.owner?._id && <img src={isActive ? OnwerStarActive : OwnerStar} alt="ownerStar"/>}
  25. </ChatListItemTitle>
  26. <TimeLastMessage isActive={isActive} timestamp={ + chat.lastMessage?.createdAt}/>
  27. </ChatListItemHeader>
  28. <ChatListItemFooter>
  29. {chat.lastMessage ?
  30. <ChatListLastMessage isActive={isActive}>
  31. <span>{(currUserId == chat.lastMessage?.owner._id) ? 'You' : chat.lastMessage?.owner.nick}:</span>
  32. {chat.lastMessage?.text.replace(/ /g, "\u00a0")}
  33. </ChatListLastMessage>
  34. : <div></div>}
  35. {/* <div>2</div> */}
  36. </ChatListItemFooter>
  37. </ChatListItemContent>
  38. </ChatListItemLink>
  39. </ChatListItemWrapper>
  40. )
  41. }
  42. export default connect(state => ({currUserId: state.auth?.payload?.sub?.id}))(ChatListItem);