import { useState, useCallback } from "react"; interface CheckoutItem { id: string; name: string; price: number; quantity: number; } interface CheckoutState { items: CheckoutItem[]; total: number; loading: boolean; error: string | null; } const useCheckout = () => { const [state, setState] = useState({ items: [], total: 0, loading: false, error: null, }); const addItem = useCallback((item: CheckoutItem) => { setState((prev) => ({ ...prev, items: [...prev.items, item], total: prev.total + item.price * item.quantity, })); }, []); const removeItem = useCallback((itemId: string) => { setState((prev) => { const item = prev.items.find((i) => i.id === itemId); return { ...prev, items: prev.items.filter((i) => i.id !== itemId), total: prev.total - (item ? item.price * item.quantity : 0), }; }); }, []); const clearCart = useCallback(() => { setState({ items: [], total: 0, loading: false, error: null, }); }, []); const checkout = useCallback(async () => { setState((prev) => ({ ...prev, loading: true, error: null })); try { console.log("Processing checkout with items:", state.items); setState((prev) => ({ ...prev, loading: false })); } catch (err) { setState((prev) => ({ ...prev, loading: false, error: err instanceof Error ? err.message : "Checkout failed"})); } }, [state.items]); return { ...state, addItem, removeItem, clearCart, checkout, }; }; export default useCheckout;