You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RequestExchangeCard.js 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import React from "react";
  2. import PropTypes from "prop-types";
  3. import {
  4. InfoIcon,
  5. MessageContent,
  6. MessageDate,
  7. MessageText,
  8. RequestExchangeCardContainer,
  9. } from "./RequestExchangeCard.styled";
  10. import { getMessageDate } from "../../../util/helpers/dateHelpers";
  11. import { useSelector } from "react-redux";
  12. import {
  13. selectExchange,
  14. selectRequester,
  15. } from "../../../store/selectors/exchangeSelector";
  16. import { useMemo } from "react";
  17. import { selectUserId } from "../../../store/selectors/loginSelectors";
  18. import requesterStatus from "../../../constants/requesterStatus";
  19. import { useTranslation } from "react-i18next";
  20. import RequestExchangeMessage from "./RequestExchangeMessage/RequestExchangeMessage";
  21. const RequestExchangeCard = (props) => {
  22. const dateString = getMessageDate(new Date(props?.message?._created));
  23. const { t } = useTranslation();
  24. const userId = useSelector(selectUserId);
  25. const requester = useSelector(selectRequester);
  26. const exchange = useSelector(selectExchange);
  27. const amIBuyer = useMemo(
  28. () => exchange?.buyer?.userId === userId,
  29. [exchange, userId]
  30. );
  31. console.log("requester", requester);
  32. console.log("exchange: ", exchange);
  33. const haveIAccepted = useMemo(
  34. () => (amIBuyer ? exchange?.buyer?.accepted : exchange?.seller?.accepted),
  35. [amIBuyer, exchange]
  36. );
  37. console.log(haveIAccepted)
  38. const interlucatorUserId = useMemo(
  39. () => (amIBuyer ? exchange?.seller?.userId : exchange?.buyer?.userId),
  40. [exchange, amIBuyer]
  41. );
  42. const message = useMemo(() => {
  43. if (requester === requesterStatus.ME) {
  44. if (props.isMyMessage) {
  45. return (
  46. <MessageText ismymessage={props.isMyMessage}>
  47. {t("messages.requestSent")}
  48. </MessageText>
  49. );
  50. } else {
  51. return (
  52. <MessageText ismymessage={props.isMyMessage}>
  53. {t("messages.requestAccepted")}
  54. </MessageText>
  55. );
  56. }
  57. } else if (requester === requesterStatus.INTERLUCATOR) {
  58. return (
  59. <RequestExchangeMessage
  60. haveIAccepted={haveIAccepted}
  61. chatId={props.chatId}
  62. userId={userId}
  63. interlucatorUserId={interlucatorUserId}
  64. />
  65. );
  66. }
  67. return "";
  68. }, [requester, t, haveIAccepted, interlucatorUserId, userId, exchange]);
  69. return (
  70. <RequestExchangeCardContainer ismymessage={props.isMyMessage}>
  71. <InfoIcon />
  72. <MessageContent ismymessage={props.isMyMessage}>
  73. {message}
  74. <MessageDate ismymessage={props.isMyMessage}>{dateString}</MessageDate>
  75. </MessageContent>
  76. </RequestExchangeCardContainer>
  77. );
  78. };
  79. RequestExchangeCard.propTypes = {
  80. isMyMessage: PropTypes.bool,
  81. message: PropTypes.any,
  82. chatId: PropTypes.string,
  83. };
  84. export default RequestExchangeCard;