import { useState } from "react"; import { Badge } from "@/components/ui/badge"; import { MdVerifiedUser } from "react-icons/md"; import { IoMdStar } from "react-icons/io"; import { FaArrowRight, FaPaperPlane } from "react-icons/fa"; import { IoChatboxEllipsesOutline } from "react-icons/io5"; import { useSelector } from "react-redux"; import { extractYear, t } from "@/utils"; import CustomLink from "@/components/Common/CustomLink"; import { BiPhoneCall } from "react-icons/bi"; import { itemOfferApi } from "@/utils/api"; import { toast } from "sonner"; import { userSignUpData } from "@/redux/reducer/authSlice"; import { Gift } from "lucide-react"; import MakeOfferModal from "./MakeOfferModal"; import { setIsLoginOpen } from "@/redux/reducer/globalStateSlice"; import ApplyJobModal from "./ApplyJobModal"; import CustomImage from "@/components/Common/CustomImage"; import Link from "next/link"; import { useNavigate } from "@/components/Common/useNavigate"; const SellerDetailCard = ({ productDetails, setProductDetails }) => { const { navigate } = useNavigate(); const userData = productDetails && productDetails?.user; const memberSinceYear = productDetails?.created_at ? extractYear(productDetails.created_at) : ""; const [IsStartingChat, setIsStartingChat] = useState(false); const loggedInUser = useSelector(userSignUpData); const loggedInUserId = loggedInUser?.id; const [IsOfferModalOpen, setIsOfferModalOpen] = useState(false); const [showApplyModal, setShowApplyModal] = useState(false); const isAllowedToMakeOffer = productDetails?.price > 0 && !productDetails?.is_already_offered && Number(productDetails?.category?.is_job_category) === 0 && Number(productDetails?.category?.price_optional) === 0; const isJobCategory = Number(productDetails?.category?.is_job_category) === 1; const isApplied = productDetails?.is_already_job_applied; const item_id = productDetails?.id; const offerData = { itemPrice: productDetails?.price, itemId: productDetails?.id, }; const handleChat = async () => { if (!loggedInUserId) { setIsLoginOpen(true); return; } try { setIsStartingChat(true); const response = await itemOfferApi.offer({ item_id: offerData.itemId, }); const { data } = response.data; navigate("/chat?activeTab=buying&chatid=" + data?.id); } catch (error) { toast.error(t("unableToStartChat")); console.log(error); } finally { setIsStartingChat(false); } }; const handleMakeOffer = () => { if (!loggedInUserId) { setIsLoginOpen(true); return; } setIsOfferModalOpen(true); }; const handleApplyJob = () => { if (!loggedInUserId) { setIsLoginOpen(true); return; } setShowApplyModal(true); }; return ( <>
{(userData?.is_verified === 1 || memberSinceYear) && (
{productDetails?.user?.is_verified == 1 && ( {t("verified")} )} {memberSinceYear && (

{t("memberSince")}: {memberSinceYear}

)}
)}
navigate(`/seller/${productDetails?.user?.id}`)} src={productDetails?.user?.profile} alt="Seller Image" width={80} height={80} className="w-[80px] aspect-square rounded-lg cursor-pointer" />
{productDetails?.user?.name} {productDetails?.user?.reviews_count > 0 && productDetails?.user?.average_rating && (

{Number(productDetails?.user?.average_rating).toFixed(2)}

{" "} |{" "}

{productDetails?.user?.reviews_count}

{" "} {t("ratings")}
)} {productDetails?.user?.show_personal_details === 1 && productDetails?.user?.email && ( {productDetails?.user?.email} )}
{productDetails?.user?.mobile && ( {t("call")} )} {isAllowedToMakeOffer && ( )} {isJobCategory && ( )}
setIsOfferModalOpen(false)} productDetails={productDetails} key={`offer-modal-${IsOfferModalOpen}`} /> ); }; export default SellerDetailCard;