Skip to content
Snippets Groups Projects

Finalisation du panier

Merged Princelle Maxime requested to merge develop into main
Viewing commit b20824e9
Show latest version
3 files
+ 19
23
Preferences
Compare changes
Files
3
+ 17
21
import { useContext } from 'react';
import { Dispatch } from 'react';
import { Product, ActionType } from './CartTypes';
import { Product } from './CartTypes';
import { cartContext } from './CartStore';
const { cartState, dispatch } = useContext(cartContext);
export function addToCart(product: Product): Product[] {
let cart = cartState.cart;
export function addToCart(cart: Product[], dispatch: Dispatch<ActionType>, product: Product): Product[] {
let newCart: Product[] = cart;
// Check if product already exists in cart, then update quantity
const existingProduct = cart.find(p => p.name === product.name);
const existingProduct = newCart.find(p => p.name === product.name);
if (existingProduct) {
existingProduct.quantity = existingProduct.quantity ? existingProduct.quantity + 1 : 1;
return setCart(cart);
return setCart(newCart, dispatch);
}
// If not, add product to cart
return setCart([...cart, { ...product, quantity: 1 }]);
return setCart([...cart, { ...product, quantity: 1 }], dispatch);
}
export function removeFromCart(product: Product): Product[] {
let cart = cartState.cart;
export function removeFromCart(cart: Product[], dispatch: Dispatch<ActionType>, product: Product): Product[] {
let newCart: Product[] = cart;
// Check if product already exists in cart, then update quantity
const existingProduct = cart.find(p => p.name === product.name);
const existingProduct = newCart.find(p => p.name === product.name);
if (existingProduct) {
existingProduct.quantity = existingProduct.quantity ? existingProduct.quantity - 1 : 0;
// If quantity is 0, remove product from cart
if (existingProduct.quantity === 0) {
return setCart(cart.filter(p => p.name !== product.name));
return setCart(newCart.filter(p => p.name !== product.name), dispatch);
}
}
return setCart(cart);
return setCart(cart, dispatch);
}
export function updateProductQuantity(product: Product, quantity: number): Product[] {
let cart = cartState.cart;
export function updateProductQuantity(cart: Product[], dispatch: Dispatch<ActionType>, product: Product, quantity: number): Product[] {
let newCart: Product[] = cart;
// Check if product already exists in cart, then update quantity
const existingProduct = cart.find(p => p.name === product.name);
const existingProduct = newCart.find(p => p.name === product.name);
if (existingProduct) {
existingProduct.quantity = quantity;
}
return setCart(cart);
return setCart(newCart, dispatch);
}
function setCart(newCart: Product[]): Product[]{
function setCart(newCart: Product[], dispatch: Dispatch<ActionType>): Product[]{
dispatch({ type: 'SET_CART', payload: newCart });
return newCart;
}
\ No newline at end of file