add clear cart functionality

This commit is contained in:
2025-09-18 22:23:03 +05:30
parent 20adf3439c
commit 0777de9290
2 changed files with 24 additions and 17 deletions

View File

@@ -27,7 +27,7 @@ export const ProductContextProvider = ({ children }) => {
fetchCategory();
}, []);
const cartFn = async (variantId, designId, quantity) => {
const cartFn = async (variantId, designId, quantity, showToast = true) => {
try{
const response = await authAxios.post('/orders/cart/manage_item/',{
@@ -35,7 +35,9 @@ export const ProductContextProvider = ({ children }) => {
design: designId,
quantity: quantity
})
if (showToast) {
toast.success('Modified Cart Successfully!')
}
return response
}
catch(error){

View File

@@ -1,3 +1,4 @@
"use client";
import React, { useContext, useEffect, useState } from "react";
import { Trash2, Plus } from "lucide-react";
@@ -43,12 +44,12 @@ const ShoppingCart = () => {
}, []);
const handleQuantityChange = async (variantId, designId, quantityChange) => {
const response = await cartFn(variantId, designId, quantityChange);
const handleQuantityChange = async (variantId, designId, quantityChange, showToast = true) => {
const response = await cartFn(variantId, designId, quantityChange, showToast);
console.log(response)
if (response?.status == 200 || response?.status == 204) {
setCartItems((prev) => {
if (!prev) return prev;
const updatedItems = prev[0].items.map((item) => {
if (item.variant.id === variantId && item?.design?.id === designId) {
@@ -86,6 +87,15 @@ const ShoppingCart = () => {
}
};
const clearCart = async () => {
if (!cartItems || !cartItems[0]?.items?.length) return;
for (const item of cartItems[0].items) {
await handleQuantityChange(item.variant.id, item.design?.id, -item.quantity, false);
}
toast.success('Cart cleared successfully!');
};
if (!cartItems) {
return null;
}
@@ -138,14 +148,6 @@ const ShoppingCart = () => {
}
};
if (!cartItems) {
return null;
}
if (!cartItems[0]?.items?.length) {
return <EmptyCart />;
}
return (
<div className="w-full bg-white">
<div className="w-full px-4 md:px-8 max-w-[1600px] mx-auto font-['Inter']">
@@ -232,8 +234,8 @@ const ShoppingCart = () => {
size={18}
onClick={() =>
handleQuantityChange(
item.variant.id,
item.design.id,
item?.variant?.id,
item?.design?.id,
-item.quantity
)
}
@@ -250,7 +252,10 @@ const ShoppingCart = () => {
<button className="text-[#c19a5b] hover:text-[#ab885b] font-medium order-2 sm:order-1">
<Link href="/"> CONTINUE SHOPPING</Link>
</button>
<button className="text-[#c19a5b] hover:text-[#ab885b] sm:ml-auto font-medium order-1 sm:order-2">
<button
onClick={clearCart}
className="text-[#c19a5b] hover:text-[#ab885b] sm:ml-auto font-medium order-1 sm:order-2"
>
CLEAR SHOPPING CART
</button>
</div>