comment + favorive

This commit is contained in:
hamid zarghami
2025-09-17 12:29:58 +03:30
parent bc22bbd6d9
commit f849ebdb42
15 changed files with 562 additions and 85 deletions
+72 -6
View File
@@ -1,21 +1,87 @@
'use client'
import Layout from "@/hoc/Layout"
import { NextPage } from "next"
import Menu from "../components/Menu"
import GridWrapper from "@/components/GridWrapper"
import ProductCard from "@/components/ProductCard"
import { useGetWithList } from "../hooks/useProfileData"
import { IProduct } from "@/types/landing.types"
import { WishlistItem } from "../types/ProfileTypes"
const FavoritePage: NextPage = () => {
const { data: withList, isLoading } = useGetWithList()
// تبدیل داده‌های wishlist به فرمت IProduct
const transformWishlistToProducts = (wishlistItems: WishlistItem[]): IProduct[] => {
return wishlistItems.map((item) => ({
_id: item.product._id,
title_fa: item.product.title_fa,
title_en: item.product.title_en,
seoTitle: item.product.seoTitle,
seoDescription: item.product.seoDescription,
model: '', // این فیلد در wishlist وجود ندارد
description: item.product.description,
tags: item.product.tags,
shop: {
_id: item.variant.shop._id,
shopName: item.variant.shop.shopName,
shopDescription: item.variant.shop.shopDescription,
logo: item.variant.shop.logo,
},
status: 'active', // فرض می‌کنیم فعال است
imagesUrl: item.product.imagesUrl,
url: item.product.url,
default_variant: {
_id: item.variant._id,
market_status: item.variant.market_status,
price: item.variant.price,
stock: item.variant.stock,
isFreeShip: item.variant.isFreeShip,
isWholeSale: item.variant.isWholeSale,
},
variants: [{
_id: item.variant._id,
market_status: item.variant.market_status as "Marketable" | "Unmarketable" | "OutOfStock",
price: item.variant.price,
stock: item.variant.stock,
postingTime: item.variant.postingTime,
isFreeShip: item.variant.isFreeShip,
isWholeSale: item.variant.isWholeSale,
shop: {
_id: item.variant.shop._id,
shopName: item.variant.shop.shopName,
shopDescription: item.variant.shop.shopDescription,
logo: item.variant.shop.logo,
},
shipmentMethod: [], // این فیلد در wishlist وجود ندارد
warranty: item.variant.warranty,
meterage: item.variant.meterage ? { _id: 0, value: item.variant.meterage.toString() } : undefined,
size: item.variant.size ? { _id: 0, value: item.variant.size.toString() } : undefined,
}],
isWishlist: true, // چون در لیست علاقه‌مندی‌ها است
}))
}
const products = withList?.results?.wishlist ? transformWishlistToProducts(withList.results.wishlist) : []
return (
<div className="p-3 sm:p-4 md:p-6">
<Menu pageActive='favorite' />
<GridWrapper desktop={5} mobile={2} className="mt-6 sm:mt-8 md:mt-10 lg:mt-14">
<ProductCard />
<ProductCard />
<ProductCard />
<ProductCard />
</GridWrapper>
{products.length === 0 && !isLoading ? (
<div className="flex flex-col items-center justify-center mt-12 text-center">
<div className="text-gray-400 text-lg mb-4">لیست علاقهمندیهای شما خالی است</div>
<div className="text-gray-500 text-sm">محصولات مورد علاقه خود را اضافه کنید</div>
</div>
) : (
<GridWrapper desktop={5} mobile={2} className="mt-6 sm:mt-8 md:mt-10 lg:mt-14">
{products.map((product) => (
<ProductCard key={product._id} item={product} />
))}
</GridWrapper>
)}
</div>
)
}