"use client"; import Image from "next/image"; import { imageUrl } from "@/helper"; import { Button, CircularProgress } from "@mui/material"; // Icons import BoldDisLikeComment from "@/components/icons/BoldDisLikeComment"; import BoldLikeComment from "@/components/icons/BoldLikeComment"; import DisLikeComment from "@/components/icons/DisLikeComment"; import LikeComment from "@/components/icons/LikeComment"; import Replies from "./Replies"; import SendAnswer from "./SendAnswer"; import { alert, isUserLoggedIn, timeAgo } from "@/helper"; import { request } from "@/services/response"; import { useState } from "react"; function ItemUser({ data, doctor, isReply = false }) { const [loadingLike, setLoadingLike] = useState(false); const [loadingDislike, setLoadingDislike] = useState(false); const [openAnswer, setOpenAnswer] = useState(false); const [status, setStatus] = useState({ like_count: data.like_status?.like_count || 0, dislike_count: data.like_status?.dislike_count || 0, like: data.like_status?.current_user_like?.like || false, dislike: data.like_status?.current_user_like?.dislike || false, }); const sendReq = async (type) => { if (!isUserLoggedIn()) { alert("warning", "برای ثبت نظر باید ابتدا وارد حساب کاربری شوید."); return; } if (type === "like") setLoadingLike(true); else setLoadingDislike(true); try { const res = await request.postCommentsLike(data.uuid, type === "like" ? 1 : -1); const d = res.data; setStatus({ like_count: d.like_count, dislike_count: d.dislike_count, like: d.current_user_like.like, dislike: d.current_user_like.dislike, }); } catch (err) { alert("error", "خطایی رخ داد! لطفاً دوباره تلاش کنید."); } finally { if (type === "like") setLoadingLike(false); else setLoadingDislike(false); } }; const toggleAnswer = () => { if (isUserLoggedIn()) { setOpenAnswer((prev) => !prev); } else { alert("warning", "برای ارسال پاسخ باید ابتدا وارد حساب کاربری شوید."); } }; return (
  • profile

    {data.author?.real_name}

    {timeAgo(data.created)}

    {data.comment}

    {/* لایک */}
    sendReq("like")}> {loadingLike ? ( ) : status.like ? ( ) : ( )}

    {status.like_count || ""}

    {/* دیس‌لایک */}
    sendReq("dislike")}> {loadingDislike ? ( ) : status.dislike ? ( ) : ( )}

    {status.dislike_count || ""}

    {!isReply && ( )}
    {!isReply && openAnswer && ( setOpenAnswer(false)} /> )} {!isReply && data.replies?.length > 0 && ( )}
  • ); } export default ItemUser;