/
IvanWake
/
cookieStore
Обзор
Документация
Войти
/
IvanWake
/
cookieStore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
src/service/cart.js
110 строк
2 KB
Ivan Wake
Fix increase and decrease handlers
19 фев 2024, 22:56
19 фев 2024, 22:56
2ea086e
Код
Авторство
О чём код?
import { updateDoc, doc, setDoc, deleteDoc } from "firebase/firestore"; import { dbFirestore } from "../firebase"; export const fetchLocalProducts = () => { const storageLength = localStorage.length; let productsCart = []; for (let i = 0; i < storageLength; i++) { productsCart.push(JSON.parse(localStorage.getItem(localStorage.key(i)))); } let filteredProducts = Object.values(productsCart).filter(product => product.hasOwnProperty('chlien')); return { filteredProducts, } } export const getTotalPrice = (productsList) => { let totalPrice = 0; for (const key in productsList) { totalPrice += productsList[key]?.amount * productsList[key]?.price; } return { totalPrice, } } export const getTotalAmount = (productsList) => { let totalAmount = 0; for (const key in productsList) { totalAmount += productsList[key]?.amount; } return { totalAmount, } } export const setProducts = (productsList, addingItem, id, productCounter) => { const existingProducts = productsList.findIndex(item => { return item.name === addingItem.name; }) let existingProduct = productsList[existingProducts]; let updatedProduct; let updetedProductObj; let amount, price; if (existingProduct) { updatedProduct = { ...existingProduct, amount: existingProduct.amount + productCounter, } amount = updatedProduct.amount; price = updatedProduct.price; updetedProductObj = { ...updatedProduct, total: amount * price, } localStorage.setItem(existingProduct.id, JSON.stringify(updetedProductObj)); } else { localStorage.setItem(id, JSON.stringify(addingItem)); } } export const updateUserCart = async (id, items) => { const userCart = { cart: items, } try { const cartDoc = doc(dbFirestore, 'carts', id); await updateDoc(cartDoc, userCart); } catch (error) { console.log(error) } }; export const deleteUserCart = async (id) => { try { const cartDoc = doc(dbFirestore, 'carts', id); await deleteDoc(cartDoc); } catch (error) { console.log(error) } }; export const setUserCart = async(id, items) => { const userCart = { cart: items, } try { const cartDoc = doc(dbFirestore, 'carts', id); await setDoc(cartDoc, userCart); } catch (error) { console.log(error) } }