FalconFashionFrontend/GUEST_CART_FIX.txt
2025-12-11 22:07:09 +05:30

64 lines
2.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// GUEST CART FIX - Copy this handleAddToCart function
// Replace lines 49-88 in src/components/Product/Product.tsx
const handleAddToCart = async () => {
const token = localStorage.getItem("token"); // check login
const productId = data._id || data.id; // Handle both _id and id
const payload = {
productId: data._id,
quantity: data.quantityPurchase || 1,
color: activeColor ? activeColor : data?.variation[0]?.color,
size: activeSize ? activeSize : data?.sizes[0],
};
// Create cart item with proper structure
const cartItem = {
...data,
id: productId, // Ensure ID is set for localStorage
quantity: payload.quantity,
selectedColor: payload.color,
selectedSize: payload.size
};
console.log("🛒 Adding to cart:", cartItem);
console.log("📦 Current cart:", cartState.cartArray);
// ✅ Always update Redux (works for both guest + logged-in users)
const existingItem = cartState.cartArray.find((item) =>
(item.id === productId || item._id === productId)
);
if (!existingItem) {
console.log(" Adding new item to cart");
addToCart(cartItem);
} else {
console.log("🔄 Updating existing item");
updateCart(productId, payload.quantity, payload.size, payload.color);
}
// ✅ If logged in → also sync with API
if (token) {
try {
const response = await axios.post(`${BaseURL}/cart`, payload, {
headers: {
Authorization: `Bearer ${token}`,
},
});
if (response.status === 200) {
console.log("✅ Cart synced with API");
}
} catch (error: any) {
console.error(
"❌ Error syncing cart:",
error.response?.data?.message || error.message
);
}
} else {
console.log("🛒 Guest mode: cart stored in localStorage via Redux");
}
openModalCart();
};