review
Build and Deploy Docker Images / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-07-17 10:54:14 +03:30
parent 81fc074708
commit 234729329c
4 changed files with 252 additions and 29 deletions
@@ -4,8 +4,9 @@ import ToggleButton, { ToggleButtonClassNames } from "@/components/button/Toggle
import TabContainer, { TabContainerClassNames, TabContainerRenderType } from "@/components/tab/TabContainer";
import { TabHeader } from "@/components/tab/TabHeader";
import { toast, toastLoginRequired } from "@/components/Toast";
import Comment from "@/components/utils/Comment";
import RateSelectionBar from "@/components/utils/RateSelectionBar";
import ReviewChatThread from "./ReviewChatThread";
import { buildReviewThreads } from "../utils/reviewHelpers";
import { Button } from "@/components/ui/button";
import { getToken } from "@/lib/api/func";
import { extractErrorMessage } from "@/lib/func";
@@ -18,7 +19,6 @@ import { useGetProfile } from "../../../(Profile)/profile/hooks/userProfileData"
import { NegativePointEnum, PositivePointEnum } from "../enum/ReviewPoints";
import { useCreateReview, useGetFoodReviews } from "../hooks/useFoodData";
import { CreateReviewType } from "../types/ReviewTypes";
import { isReviewApproved } from "../../about/types/Types";
type Props = {
foodId: string;
@@ -54,8 +54,7 @@ function FoodReviewsSection({ foodId }: Props) {
const [negativePoints, setNegativePoints] = useState<string[]>([]);
const [formKey, setFormKey] = useState(0);
const reviews = (reviewsData?.data || []).filter(isReviewApproved);
const sortedReviews = [...reviews].sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
const reviewThreads = buildReviewThreads(reviewsData?.data || []);
const getTranslationKey = (point: string, isPositive: boolean): string => {
const basePath = isPositive ? "Tabs.Strengths.Options" : "Tabs.Weeknesses.Options";
@@ -84,15 +83,6 @@ function FoodReviewsSection({ foodId }: Props) {
setFormKey((prev) => prev + 1);
};
const formatDate = (dateString: string) => {
const date = new Date(dateString);
return date.toLocaleDateString("fa-IR", {
year: "numeric",
month: "long",
day: "numeric",
});
};
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
@@ -217,21 +207,8 @@ function FoodReviewsSection({ foodId }: Props) {
<div>
{reviewsLoading ? (
<p className="text-sm2 text-center py-8 text-disabled-text">در حال بارگذاری نظرات...</p>
) : sortedReviews.length > 0 ? (
sortedReviews.map((review) => (
<article key={review.id}>
<Comment
className="pt-6"
user={`${review.user?.firstName || ""} ${review.user?.lastName || ""}`.trim() || "کاربر"}
rating={review.rating}
date={formatDate(review.createdAt)}
text={review.comment}
tags={[]}
positivePoints={review.positivePoints}
negativePoints={review.negativePoints}
/>
</article>
))
) : reviewThreads.length > 0 ? (
reviewThreads.map((thread) => <ReviewChatThread key={thread.root.id} thread={thread} />)
) : (
<p className="text-sm2 text-center py-8 text-disabled-text">هنوز نظری ثبت نشده است</p>
)}