/
IvanWake
/
cookieStore
Обзор
Документация
Войти
/
IvanWake
/
cookieStore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
src/store/cart-store.js
71 строка
2 KB
Ivan Wake
Fix increase and decrease handlers
19 фев 2024, 22:56
19 фев 2024, 22:56
2ea086e
Код
Авторство
О чём код?
import {create} from 'zustand'; export const useCart = create(set => ({ isCartVisible: false, changeVisibilty: (stateVisibility) => set(state => { return {isCartVisible: stateVisibility}; }), cartProductsLocal: 1, cartProductsLocalHandler: () => set(state => { return {cartProductsLocal: state.cartProductsLocal + 1} }), cartProductsAuthUser: [], updateCartProductsAuthUser: (addingItem, productCounter) => set(state => { let updatedProducts = [...state.cartProductsAuthUser]; const productsList = [...state.cartProductsAuthUser]; const existingProducts = productsList.findIndex(item => { return item.name === addingItem.name; }) let existingProduct = updatedProducts[existingProducts]; let updatedProduct; let updatedProductObj; let amount, price; if (existingProduct) { updatedProduct = { ...existingProduct, amount: existingProduct.amount + productCounter, } amount = updatedProduct.amount; price = updatedProduct.price; updatedProductObj = { ...updatedProduct, total: amount * price, } updatedProducts[existingProducts] = updatedProductObj; } else { updatedProducts = productsList.concat(addingItem); } return {cartProductsAuthUser: updatedProducts}; }), removeCartProductAuthUser: (item) => set(state => { return { cartProductsAuthUser: state.cartProductsAuthUser.filter(product => product.name !== item.name) } }), increaseCounterAuthUser: (item) => set((state) => ({ cartProductsAuthUser: state.cartProductsAuthUser.map(product => { if (product.name === item.name) { return { ...product, amount: product.amount + 1 } } return product; }) })), decreaseCounterAuthUser: (item) => set((state) => ({ cartProductsAuthUser: state.cartProductsAuthUser.map(product => { if (product.name === item.name && item.amount > 1) { return { ...product, amount: product.amount - 1 } } return product; }) })), setCartProductsAuthUser: (item) => set(state => { return {cartProductsAuthUser: item}; }), }))