diff --git a/src/app/product/components/BaseInformation.tsx b/src/app/product/components/BaseInformation.tsx index 03a1c37..12d5460 100644 --- a/src/app/product/components/BaseInformation.tsx +++ b/src/app/product/components/BaseInformation.tsx @@ -1,33 +1,27 @@ 'use client' import { Star1 } from 'iconsax-react' -import { FC, useEffect, useMemo } from 'react' -import { Product, Review } from '@/types/product.types' +import { FC, useEffect } from 'react' +import { Product } from '@/types/product.types' import Image from 'next/image' import { clx } from '@/helpers/utils' import { useProductStore } from '../store/Store' interface BaseInformationProps { product: Product - reviews?: Review[] + stats: { + commentsCount: number; + averageRate: number; + } } -const BaseInformation: FC = ({ product, reviews = [] }) => { +const BaseInformation: FC = ({ product, stats }) => { const { setVariantId, variantId } = useProductStore() const brand = product.brand // محاسبه میانگین امتیاز و تعداد دیدگاه‌ها - const { averageRating, reviewsCount } = useMemo(() => { - if (!reviews.length) { - return { averageRating: 0, reviewsCount: 0 } - } - const totalRating = reviews.reduce((sum, review) => sum + review.rating, 0) - return { - averageRating: Number((totalRating / reviews.length).toFixed(1)), - reviewsCount: reviews.length - } - }, [reviews]) + // تابع برای انتخاب variant const handleVariantSelect = (variantId: string) => { @@ -65,7 +59,7 @@ const BaseInformation: FC = ({ product, reviews = [] }) => > - {reviewsCount > 0 ? `${averageRating} امتیاز` : '۰ امتیاز'} + {stats.commentsCount > 0 ? `${stats.averageRate} امتیاز` : '۰ امتیاز'}
@@ -76,7 +70,7 @@ const BaseInformation: FC = ({ product, reviews = [] }) => }} className='text-primary text-xs sm:text-sm hover:underline' > - {reviewsCount} دیدگاه + {stats.commentsCount} دیدگاه diff --git a/src/app/product/components/SingleProduct.tsx b/src/app/product/components/SingleProduct.tsx index 67886f7..3a67ced 100644 --- a/src/app/product/components/SingleProduct.tsx +++ b/src/app/product/components/SingleProduct.tsx @@ -35,7 +35,7 @@ const SingleProduct = ({ id }: SingleProductProps) => { notFound() } - const { product, categoryPath, reviews, questions } = productData.results + const { product, categoryPath, reviews, stats } = productData.results return (
@@ -69,7 +69,7 @@ const SingleProduct = ({ id }: SingleProductProps) => {
- +
diff --git a/src/types/product.types.ts b/src/types/product.types.ts index 23d4bab..2a01e53 100644 --- a/src/types/product.types.ts +++ b/src/types/product.types.ts @@ -172,5 +172,9 @@ export interface ProductDetailResponse { categoryPath: CategoryPathItem[]; reviews?: Review[]; questions?: Question[]; + stats: { + commentsCount: number; + averageRate: number; + }; }; }