import { useCallback, useEffect, useState } from "react" import { medusaClient } from "../lib/medusa-client" import { formatAmount } from "../lib/format" import { getStoredCartId, clearStoredCartId } from "../lib/storefront" export default function CartPage() { const [cart, setCart] = useState(null) const [status, setStatus] = useState("") const [isLoading, setIsLoading] = useState(true) const loadCart = useCallback(async () => { const storedCartId = getStoredCartId() if (!storedCartId) { setCart(null) setIsLoading(false) return } try { const { cart: fetchedCart } = await medusaClient.carts.retrieve(storedCartId) setCart(fetchedCart) } catch (error) { clearStoredCartId() setCart(null) } finally { setIsLoading(false) } }, []) useEffect(() => { loadCart() }, [loadCart]) const handleRemove = async (lineItemId) => { if (!cart) { return } setStatus("") try { await medusaClient.carts.lineItems.delete(cart.id, lineItemId) await loadCart() } catch (error) { setStatus("Impossible de retirer l'article.") } } if (isLoading) { return

Chargement du panier...

} if (!cart || !cart.items?.length) { return

Votre panier est vide.

} return (

Panier

{status &&

{status}

}
{cart.items.map((item) => (
{item.title}

Quantité : {item.quantity}

{formatAmount(item.unit_price, cart.region?.currency_code || "eur")}

))}

Total : {formatAmount(cart.total, cart.region?.currency_code || "eur")}

) }