feat(F-102): completed feature
This commit is contained in:
@@ -8,6 +8,8 @@ export interface CartItem {
|
||||
quantity: number;
|
||||
priceCents: number;
|
||||
imageUrl?: string;
|
||||
/** Cantidad mínima de compra del producto (F-102). */
|
||||
minPurchaseQty?: number;
|
||||
}
|
||||
|
||||
interface CartContextValue {
|
||||
@@ -39,7 +41,15 @@ export function CartProvider({ children }: { children: React.ReactNode }) {
|
||||
setItems((prev) => {
|
||||
const existing = prev.find((i) => i.variantId === item.variantId);
|
||||
const next = existing
|
||||
? prev.map((i) => i.variantId === item.variantId ? { ...i, quantity: i.quantity + item.quantity } : i)
|
||||
? prev.map((i) =>
|
||||
i.variantId === item.variantId
|
||||
? {
|
||||
...i,
|
||||
quantity: i.quantity + item.quantity,
|
||||
minPurchaseQty: Math.max(i.minPurchaseQty ?? 1, item.minPurchaseQty ?? 1),
|
||||
}
|
||||
: i,
|
||||
)
|
||||
: [...prev, item];
|
||||
localStorage.setItem('mdv_cart', JSON.stringify(next));
|
||||
return next;
|
||||
@@ -56,9 +66,14 @@ export function CartProvider({ children }: { children: React.ReactNode }) {
|
||||
|
||||
const changeQuantity = useCallback((variantId: string, quantity: number) => {
|
||||
setItems((prev) => {
|
||||
const next = quantity <= 0
|
||||
? prev.filter((i) => i.variantId !== variantId)
|
||||
: prev.map((i) => i.variantId === variantId ? { ...i, quantity } : i);
|
||||
const next =
|
||||
quantity <= 0
|
||||
? prev.filter((i) => i.variantId !== variantId)
|
||||
: prev.map((i) =>
|
||||
i.variantId === variantId
|
||||
? { ...i, quantity: Math.max(quantity, i.minPurchaseQty ?? 1) }
|
||||
: i,
|
||||
);
|
||||
localStorage.setItem('mdv_cart', JSON.stringify(next));
|
||||
return next;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user