'use client'; import React from 'react'; import { useRouter } from 'next/navigation'; import { useTranslation } from 'react-i18next'; import { ArrowLeft, Trash } from 'iconsax-react'; import Image from 'next/image'; import { useCart } from './hook/useCart'; import CartSummary from './components/CartSummary'; import Prompt from '@/components/utils/Prompt'; import { useGetFoods } from '@/app/[name]/(Main)/hooks/useMenuData'; import VerticalScrollView from '@/components/listview/VerticalScrollView'; import MenuItem from '@/components/listview/MenuItem'; import MenuItemRenderer from '@/components/listview/MenuItemRenderer'; import type { Food } from '@/app/[name]/(Main)/types/Types'; import { useGetAbout } from '../../(Main)/about/hooks/useAboutData'; import PagerModal from '@/components/pager/PagerModal'; import Button from '@/components/button/PrimaryButton'; import NotificationBellIcon from '@/components/icons/NotificationBellIcon'; const CartIndex = () => { const { t } = useTranslation('parallels', { keyPrefix: 'Cart' }); const router = useRouter(); const { clearCart, items } = useCart(); const [showClearConfirm, setShowClearConfirm] = React.useState(false); const [showPagerModal, setShowPagerModal] = React.useState(false); const { data: foodsResponse, isFetching } = useGetFoods(); const { data: aboutData } = useGetAbout(); const isPremium = aboutData?.data?.plan === 'premium'; const foods = React.useMemo(() => foodsResponse?.data ?? [], [foodsResponse?.data]); const isLoading = isFetching && !foods.length; const cartFoods = React.useMemo(() => { if (!foods.length) return []; return Object.entries(items) .filter(([, detail]) => detail?.quantity && detail.quantity > 0) .map(([id]) => foods.find((foodItem) => String(foodItem.id) === String(id)) ) .filter((food): food is Food => Boolean(food)); }, [foods, items]); const isCartEmpty = cartFoods.length === 0; const handleClearCart = (e: React.MouseEvent) => { e?.preventDefault(); e?.stopPropagation(); clearCart(); setShowClearConfirm(false); }; const toggleClearConfirm = (e: React.MouseEvent) => { e?.preventDefault(); e?.stopPropagation(); setShowClearConfirm(false); }; return (
{isCartEmpty ? ( ) : ( setShowClearConfirm(true)} /> )}

{t('Heading')}

router.back()} />
{isLoading ? (

در حال دریافت سبد خرید...

) : isCartEmpty ? (
cart

{t('EmptyStateTitle', { defaultValue: 'سبد خرید شما خالی است' })}

{t('EmptyStateDescription', { defaultValue: 'برای افزودن غذا، به منوی رستوران برگردید.', })}

) : ( {!isPremium && (

ثبت سفارش

برای ثبت سفارش، لطفاً گارسون را صدا کنید

)} {cartFoods.map((food) => ( ))}
)}
setShowPagerModal(false)} />
); }; export default CartIndex;