import React, { useContext, useState } from 'react'; import { FaTrashAlt, FaUtensils, FaArrowLeft } from "react-icons/fa"; import { CartContext } from './CartContext'; import { OrderContext } from './OrderContext'; import { useNavigate } from 'react-router-dom'; import styles from '../../css/ShoppingCartCss/checkout-style.module.css'; const Checkout = () => { const { cart, removeFromCart } = useContext(CartContext); const { isOrderInProgress } = useContext(OrderContext); const navigate = useNavigate(); const [quantities, setQuantities] = useState(() => { const savedCart = localStorage.getItem('cart'); return savedCart ? JSON.parse(savedCart) : cart.map(item => ({ id: item.id, grams: "" })); }); const cartLength = cart?.length || 0; const handleBackClick = () => { navigate(-1); }; const roundToNearest50 = (value) => { let rounded = Math.round(value / 50) * 50; return Math.max(50, Math.min(rounded, 2000)); }; const updateLocalStorageCart = (updatedCart) => { localStorage.setItem('cart', JSON.stringify(updatedCart)); }; const handleQuantityChange = (id, newGrams) => { const updatedQuantities = quantities.map(q => q.id === id ? { ...q, grams: newGrams } : q); setQuantities(updatedQuantities); updateLocalStorageCart(updatedQuantities); }; const handleQuantityBlur = (id, newGrams) => { const roundedGrams = roundToNearest50(newGrams); const updatedQuantities = quantities.map(q => q.id === id ? { ...q, grams: roundedGrams } : q); setQuantities(updatedQuantities); updateLocalStorageCart(updatedQuantities); }; const handleRemoveFromCart = (item) => { removeFromCart(item); const updatedQuantities = quantities.filter(q => q.id !== item.id); setQuantities(updatedQuantities); updateLocalStorageCart(updatedQuantities); }; const allInputsFilled = quantities.every(q => q.grams >= 50 && q.grams <= 2000); const handleProceed = () => { if (!isOrderInProgress) { const itemsWithQuantities = cart.map((item) => ({ id: item.id, name: item.name, measurement: item.measurement, grams: quantities.find(q => q.id === item.id)?.grams || 0 })); navigate('/delivery-details', { state: { itemsWithQuantities } }); } }; return (
Your cart is empty
) : (You have {cartLength} items in your cart:
Enter the amount of grams needed for each ingredient:
{item.name}
In Recipe: {item.measurement}
50g - 2000g