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.

UserReviewsCard.js 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import React, { useMemo } from "react";
  2. import PropTypes from "prop-types";
  3. import {
  4. ProfileImage,
  5. ProfileImageContainer,
  6. ProfileName,
  7. ReviewContainer,
  8. ReviewDetails,
  9. ReviewDetailsText,
  10. ReviewDetailsValue,
  11. ReviewQuote,
  12. ReviewQuoteBox,
  13. ReviewQuoteText,
  14. ThumbBox,
  15. ThumbDown,
  16. ThumbUp,
  17. } from "./UserReviewsCard.styled";
  18. import { ListItem } from "@mui/material";
  19. import selectedTheme from "../../../themes";
  20. import { useTranslation } from "react-i18next";
  21. import ReviewOffer from "./ReviewOffer/ReviewOffer";
  22. const UserReviewsCard = (props) => {
  23. const { t } = useTranslation();
  24. const review = useMemo(() => {
  25. if (props.givingReview) {
  26. return {
  27. ...props.review,
  28. };
  29. }
  30. let isSuccessfulSwap = "DA";
  31. if (props.review.succeeded === "failed") isSuccessfulSwap = "NE";
  32. let isGoodCommunication = "DA";
  33. if (props.review.communication === "could be better")
  34. isGoodCommunication = "MOŽE BOLJE";
  35. if (props.review.communication === "no") isGoodCommunication = "NE";
  36. return {
  37. name: props.review.companyName,
  38. image: props.review.image,
  39. isGoodCommunication,
  40. isSuccessfulSwap,
  41. quote: props?.review?.message,
  42. };
  43. }, [props.review]);
  44. return (
  45. <ReviewContainer key={review?.image}>
  46. <ListItem alignItems="flex-start" sx={{ alignItems: "center", mt: 2 }}>
  47. <ProfileImageContainer>
  48. <ProfileImage alt={review?.name} src={review?.image} />
  49. </ProfileImageContainer>
  50. <ProfileName sx={{ color: selectedTheme.primaryPurple }}>
  51. <b>{review?.name}</b>
  52. </ProfileName>
  53. </ListItem>
  54. <ReviewQuote
  55. container
  56. direction="row"
  57. justifyContent="start"
  58. alignItems="center"
  59. spacing={2}
  60. sx={{ pl: 2, py: 2 }}
  61. >
  62. <ThumbBox item>
  63. {review.isSuccessfulSwap === "DA" ? (
  64. <ThumbUp color="success" />
  65. ) : (
  66. <ThumbDown color="error" />
  67. )}
  68. </ThumbBox>
  69. <ReviewQuoteBox item>
  70. <ReviewQuoteText>&quot;{review?.quote}&quot;</ReviewQuoteText>
  71. </ReviewQuoteBox>
  72. </ReviewQuote>
  73. <ReviewDetails sx={{ pl: 2, pb: 2 }}>
  74. <ReviewDetailsText variant="body2" sx={{ display: "block" }}>
  75. {t("reviews.isCorrectCommunication") + ": "}
  76. <ReviewDetailsValue>
  77. {review?.isGoodCommunication?.toUpperCase()}
  78. </ReviewDetailsValue>
  79. </ReviewDetailsText>
  80. <ReviewDetailsText variant="body2" sx={{ display: "block" }}>
  81. {t("reviews.hasExchangeSucceed") + ": "}
  82. <ReviewDetailsValue>
  83. {review?.isSuccessfulSwap?.toUpperCase()}
  84. </ReviewDetailsValue>
  85. </ReviewDetailsText>
  86. </ReviewDetails>
  87. <ReviewOffer />
  88. </ReviewContainer>
  89. );
  90. };
  91. UserReviewsCard.propTypes = {
  92. children: PropTypes.node,
  93. heading: PropTypes.string,
  94. isProfileReviews: PropTypes.bool,
  95. profileReviews: PropTypes.any,
  96. className: PropTypes.string,
  97. review: PropTypes.any,
  98. givingReview: PropTypes.bool,
  99. };
  100. UserReviewsCard.defaultProps = {
  101. isProfileReviews: false,
  102. profileReviews: [],
  103. };
  104. export default UserReviewsCard;