'use client'
import MinusIcon from '@/components/icons/MinusIcon'
import PlusIcon from '@/components/icons/PlusIcon'
import { ef } from '@/lib/helpers/utfNumbers'
import { useCart } from '@/app/[name]/(Dialogs)/cart/hook/useCart'
import { motion } from 'framer-motion'
import { ArrowLeft, Clock, Cup, Heart, TruckTick } from 'iconsax-react'
import Image from 'next/image'
import { useParams, useRouter } from 'next/navigation'
import React, { useMemo } from 'react'
import { useGetFood } from './hooks/useFoodData'
import { useGetAbout } from '../about/hooks/useAboutData'
type Props = object
function FoodPage({ }: Props) {
const { id } = useParams();
const router = useRouter();
const { data: food, isLoading } = useGetFood(id as string);
const { data: about } = useGetAbout();
const { items, addToCart, removeFromCart } = useCart();
const foodId = food?.data?.id || id as string;
const quantity = useMemo(() => {
const item = items?.[foodId];
if (item && typeof item === 'object' && 'quantity' in item) {
return item.quantity || 0;
}
return 0;
}, [items, foodId]);
const handleAddToCart = () => {
if (foodId) {
addToCart(foodId);
}
};
const handleRemoveFromCart = () => {
if (foodId) {
removeFromCart(foodId);
}
};
if (isLoading) {
return (
);
}
if (!food?.data) {
return (
);
}
const foodData = food.data;
const foodName = foodData.title || foodData.name || foodData.foodName || '';
const foodImage = typeof foodData.image === 'string'
? foodData.image
: Array.isArray(foodData.images) && foodData.images.length > 0
? typeof foodData.images[0] === 'string'
? foodData.images[0]
: typeof foodData.images[0] === 'object' && foodData.images[0] !== null && 'url' in foodData.images[0]
? (foodData.images[0] as { url: string }).url
: '/assets/images/food-preview-hq.png'
: '/assets/images/food-preview-hq.png';
const categoryName = foodData.category?.title;
const prepareTime = foodData.prepareTime || 0;
const price = foodData.price || 0;
const content = Array.isArray(foodData.content)
? foodData.content.join('، ')
: foodData.content || foodData.desc || '';
return (
{categoryName || '-'}
{foodName}
زمان پخت و آماده سازی: {prepareTime > 0 ? `${ef(String(prepareTime))} دقیقه` : '-'}
{about?.data?.score?.purchaseScore && about?.data?.score?.purchaseAmount ? (
<>
{ef(
Math.round(
foodData?.price *
(Number(about.data.score.purchaseScore) / Number(about.data.score.purchaseAmount))
).toLocaleString('en-US')
)}
امتیاز برای هر بار خرید
>
) : (
-
)}
{foodData.pickupServe ? 'ارسال با پیک' : '-'}
محتویات:
{content || '-'}
{ef(price.toLocaleString('en-US'))} T
{quantity <= 0 ? (
) : (
<>
{quantity}
>
)}
)
}
export default FoodPage