"use client"; import { Sheet, SheetClose, SheetContent, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, } from "@/components/ui/sheet"; import { Separator } from "@/components/ui/separator"; import Link from "next/link"; import { Button, buttonVariants } from "@/components/ui/button"; import Image from "next/image"; import CartItem from "./CartItem"; import { useEffect, useState } from "react"; import { ShoppingBagIcon, X } from "lucide-react"; import { useDispatch, useSelector } from "react-redux"; import { AppDispatch, RootState } from "../../store/store"; import { clearMessageOrError, fetchCart, getLocalCartItems, } from "../../store/cartSlice"; import Logo from "@/public/New_Spraykaro.svg"; import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog"; import MainComponent from "@/app/(auth)/signin/OtpInput"; import { cn } from "@/components/lib/utils"; import { toast } from "react-toastify"; import { PaymentPageData } from "../NavBar/NavbarRightIcons"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { getUserCart } from "@/components/utils/queryFunctions"; import Loading from "@/app/loading"; import ErrorPage from "../ErrorPage"; const CartComponent = ({ paymentData, isNavButton = true, }: { paymentData: PaymentPageData; isNavButton: boolean; }) => { const [open, setOpen] = useState(false); const user = useSelector((state: RootState) => state.user); // const dispatch: AppDispatch = useDispatch(); // const cart = useSelector((state: RootState) => state?.cart); // const cart_env = // process.env.NODE_ENV === "production" // ? "cart_spraykaro" // : "cart_spraykaro_dev"; const queryClient = useQueryClient(); const getLocalCartItems = () => { const queryData = queryClient.getQueryData(["cart"]); console.log("queryData", queryData); return Array.isArray(queryData) ? queryData : []; }; const { data: userCartData, isLoading, isError, } = useQuery({ queryKey: ["cart"], queryFn: async () => { const persistedData = queryClient.getQueryData(["cart"]); console.log("persistedData", persistedData); if (persistedData) return persistedData; if (user?.accessToken) { console.log("user.accessToken", user.accessToken); const response = await getUserCart(user.accessToken); if (response?.statusMessage) { toast.warning(response?.statusMessage, { autoClose: 2500, }); } return response?.data; } else { return getLocalCartItems(); } }, staleTime: 3600000, refetchOnMount: false, }); console.log("userCartData", userCartData); // if (isLoading) { // return ; // } // useEffect(() => { // if (cart?.isError) { // toast.error(cart?.Message, { // autoClose: 2500, // }); // dispatch(clearMessageOrError()); // } else { // if (cart?.Message) { // toast.warning(cart?.Message, { // autoClose: 2500, // }); // } // } // }, [cart?.Message, cart?.isError, dispatch]); // useEffect(() => { // if (user?.id == null) { // dispatch(getLocalCartItems()); // } else { // dispatch(fetchCart()); // } // }, [dispatch, user]); // useEffect(() => { // if (user.id === null || user.id === undefined) { // const handleStorageChange = (event: StorageEvent) => { // if (event.key === cart_env) { // dispatch(getLocalCartItems()); // } // }; // window.addEventListener("storage", handleStorageChange); // return () => { // window.removeEventListener("storage", handleStorageChange); // }; // } // }, [cart_env, dispatch, user.id]); // const closeMessage = () => { // dispatch(clearMessageOrError()); // }; const itemCount = userCartData?.Items?.length || 0; const items = userCartData?.Items || []; const cartTotal = userCartData?.Total || 0; const isShippingFee = paymentData?.ShippingFeeBeforePrice > cartTotal; return ( {isNavButton ? (
{itemCount !== 0 ? itemCount : ""}
) : ( )}
Cart ({itemCount})
{/* {cart?.Message && (
{cart.Message}
)} */} {itemCount > 0 ? (
{items?.map((item: any, index: number) => ( ))}
{isShippingFee && (
Cart Total ₹ {cartTotal}
)} {paymentData?.ShippingFeeBeforePrice && paymentData?.ShippingFee && (
Shipping {!isShippingFee ? ( Free ) : ( ₹ {paymentData?.ShippingFee} )}
)}
{isShippingFee ? "Final Total" : "Total"} ₹{" "} {isShippingFee ? cartTotal + paymentData?.ShippingFee : cartTotal}
{isShippingFee && (

Add Items worth ₹{" "} {paymentData?.ShippingFeeBeforePrice - cartTotal} more to get free shipping

)} {user && user.id ? ( setOpen(false)} > Continue to Checkout ) : ( Login to Continue

Please Login{" "} before Checkout

)}
) : (
Your cart is empty
Add items to your cart to checkout
)}
); }; export default CartComponent;