"use client"; import { useGetFoods } from "@/app/[name]/(Main)/hooks/useMenuData"; import { useGetProfile } from "@/app/[name]/(Profile)/profile/hooks/userProfileData"; import Button from "@/components/button/PrimaryButton"; import NotificationBellIcon from "@/components/icons/NotificationBellIcon"; import MenuItem from "@/components/listview/MenuItem"; import MenuItemRenderer from "@/components/listview/MenuItemRenderer"; import PagerModal from "@/components/pager/PagerModal"; import Prompt from "@/components/utils/Prompt"; import { ArrowLeft, Trash } from "iconsax-react"; import Image from "next/image"; import { useRouter } from "next/navigation"; import React from "react"; import { useTranslation } from "react-i18next"; import { useGetAbout } from "../about/hooks/useAboutData"; import CartSkeleton from "./components/CartSkeleton"; import CartSummary from "./components/CartSummary"; import { useCart } from "./hook/useCart"; import { useGetCartItems } from "./hooks/useCartData"; import { cartItemsToFoods, guestCartItemsToFoods, hasCartEntries, } from "./lib/cartUtils"; const CartPage = () => { const { t } = useTranslation("parallels", { keyPrefix: "Cart" }); const router = useRouter(); const { isSuccess } = useGetProfile(); const { clearCart, items } = useCart(); const { data: cartData, isPending: cartPending } = useGetCartItems(isSuccess); const { data: foodsResponse } = useGetFoods(); const { data: aboutData } = useGetAbout(); const [showClearConfirm, setShowClearConfirm] = React.useState(false); const [showPagerModal, setShowPagerModal] = React.useState(false); const isPremium = aboutData?.data?.plan === "premium"; const cartFoods = React.useMemo(() => { const foods = foodsResponse?.data ?? []; if (isSuccess) { const apiItems = cartData?.data?.items ?? []; return cartItemsToFoods(apiItems, foods); } return guestCartItemsToFoods(items, foods); }, [isSuccess, cartData?.data?.items, items, foodsResponse?.data]); const hasItems = React.useMemo(() => { if (isSuccess) { return (cartData?.data?.totalItems ?? 0) > 0 || hasCartEntries(items); } return hasCartEntries(items); }, [isSuccess, cartData?.data?.totalItems, items]); const guestAwaitingMenu = !isSuccess && hasItems && cartFoods.length === 0 && !foodsResponse?.data; const showInitialCartLoad = isSuccess && cartPending && !cartData && hasItems; const isCartEmpty = !hasItems; 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()} />
{showInitialCartLoad || guestAwaitingMenu ? ( ) : isCartEmpty ? (
cart

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

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

) : (
{!isPremium && (

ثبت سفارش

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

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