'use client'; import { MinusIcon, PlusIcon } from '@heroicons/react/24/outline'; import clsx from 'clsx'; import { updateItemQuantity } from 'components/cart/actions'; import LoadingDots from 'components/loading-dots'; import type { CartItem } from 'lib/shopify/types'; import { useOptimistic, useState } from 'react'; import { useFormState, useFormStatus } from 'react-dom'; function SubmitButton({ type }: { type: 'plus' | 'minus' }) { const { pending } = useFormStatus(); return ( ); } export function EditItemQuantityButton({ item, type, onQuantityChange }: { item: CartItem; type: 'plus' | 'minus'; onQuantityChange: (quantity: number) => void }) { const [message, formAction] = useFormState(updateItemQuantity, null); const [optimisticQuantity, setOptimisticQuantity] = useOptimistic(item.quantity, (state: number, change: number) => state + change); // const handleSubmit = async (event: React.FormEvent) => { // event.preventDefault(); // const change = type === 'plus' ? 1 : -1; // setOptimisticQuantity(change); // onQuantityChange(optimisticQuantity + change); // const updatedPayload = { // lineId: item.id, // variantId: item.merchandise.id, // quantity: optimisticQuantity + change // }; // await formAction(updatedPayload); // }; return (
); } export function EditItemQuantity({ item }: { item: CartItem }) { const [quantity, setQuantity] = useState(item.quantity); const handleQuantityChange = (newQuantity: number) => setQuantity(newQuantity); return ({quantity}