import React, { useMemo, useState } from "react"; import PropTypes from "prop-types"; import { CheckButton, DetailIcon, DetailText, EditIcon, EditIconContainer, EyeIcon, Line, MessageIcon, OfferAuthor, OfferAuthorName, OfferCardContainer, OfferCategory, OfferDescription, OfferDescriptionText, OfferDescriptionTitle, OfferDetails, OfferFlexContainer, OfferImage, OfferImageContainer, OfferInfo, OfferLocation, OfferTitle, OfferTitleAboveImage, OfferViews, PinIcon, RemoveIcon, RemoveIconContainer, LikeIcon, LikeIconContainer, } from "./OfferCard.styled"; import DeleteOffer from "./DeleteOffer/DeleteOffer"; import { ReactComponent as Category } from "../../../assets/images/svg/category.svg"; import { ReactComponent as Message } from "../../../assets/images/svg/mail.svg"; import selectedTheme from "../../../themes"; import { useHistory } from "react-router-dom"; import CreateOffer from "../CreateOfferCard/CreateOffer"; import { useSelector } from "react-redux"; import { selectUserId } from "../../../store/selectors/loginSelectors"; const OfferCard = (props) => { const [deleteOfferModal, setDeleteOfferModal] = useState(false); const [editOfferModal, setEditOfferModal] = useState(false); const history = useHistory(); const userId = useSelector(selectUserId); const routeToItem = (itemId) => { history.push(`/proizvodi/${itemId}`); }; const messageUser = () => { props.messageUser(props.offer); }; const makeReview = () => { if (!props.disabledReviews) { props.makeReview(props.offer); } }; const closeModalHandler = () => { setDeleteOfferModal(false); }; const closeCreateOfferModal = () => { setEditOfferModal(false); }; const showMessageIcon = useMemo(() => { if (userId === props.offer?.userId) { return false; } return true; }, [userId, props.offer]); if (deleteOfferModal || editOfferModal) { document.body.style.overflow = "hidden"; } else { document.body.style.overflow = "auto"; } return ( routeToItem(props?.offer?._id)} > {props?.offer?.name} routeToItem(props?.offer?._id)} > {props?.offer?.name} {props?.offer?.user?.company?.name} {props?.offer?.location?.city} {props?.offer?.category?.name} {props.dontShowViews ? ( <> ) : ( {props?.offer?.views?.count} )} {!props.halfwidth ? ( Opis: {props?.offer?.description} routeToItem(props?.offer?._id)} > Pogledaj proizvod ) : ( <> )} {props.isMyOffer ? ( <> setDeleteOfferModal(true)} > setEditOfferModal(true)} > ) : props.aboveChat ? ( ) : ( )} {props?.offer?.pinned && } {deleteOfferModal && ( )} {editOfferModal && ( )} ); }; OfferCard.propTypes = { children: PropTypes.node, _id: PropTypes.string, title: PropTypes.string, description: PropTypes.string, category: PropTypes.string, author: PropTypes.string, location: PropTypes.string, image: PropTypes.node, quantity: PropTypes.number, package: PropTypes.string, numberOfViews: PropTypes.number, halfwidth: PropTypes.bool, sponsored: PropTypes.bool, offer: PropTypes.any, pinned: PropTypes.bool, vertical: PropTypes.bool, isMyOffer: PropTypes.bool, aboveChat: PropTypes.bool, disabledReviews: PropTypes.bool, messageUser: PropTypes.func, makeReview: PropTypes.func, dontShowViews: PropTypes.bool, skeleton: PropTypes.bool, }; OfferCard.defaultProps = { halfwidth: false, sponsored: false, messageUser: () => {}, makeReview: () => {}, }; export default OfferCard;