/** * Retrieves cart data from localStorage, if available. * * @returns {Object} - The cart data as an object, or an empty object if not found. */ const getCart = () => { if (typeof window !== 'undefined' && window.localStorage) { const cart = localStorage.getItem('cart') if (cart) return JSON.parse(cart) } return {} } /** * Saves cart data to localStorage, if available. * * @param {Object} cart - The cart data to be saved. * @returns {boolean} - Returns `true` if cart data is saved successfully, `false` otherwise. */ const setCart = (cart) => { if (typeof window !== 'undefined' && window.localStorage) { const storageChangeEvent = new Event('localStorageChange') localStorage.setItem('cart', JSON.stringify(cart)) window.dispatchEvent(storageChangeEvent) return true } return false } /** * Retrieves an item from the cart data based on the given product ID. * * @param {Object} options - The options object containing the productId. * @param {string} options.productId - The ID of the product to be retrieved from the cart. * @returns {Object} - Returns the item object from the cart data, or `undefined` if not found. */ const getItemCart = ({ productId }) => { let cart = getCart() return cart[productId] } /** * Updates an item in the cart data with the given productId, quantity, and selected status. * * @param {Object} options - The options object containing the productId, quantity, and selected status. * @param {string} options.productId - The ID of the product to be updated in the cart. * @param {number} options.quantity - The new quantity of the product in the cart. * @param {boolean} [options.selected=false] - The new selected status of the product in the cart. Default is `false`. * @returns {boolean} - Returns `true`. */ const updateItemCart = ({ productId, quantity, selected = false }) => { let cart = getCart() quantity = parseInt(quantity) cart[productId] = { productId, quantity, selected } setCart(cart) return true } /** * Deletes an item from the cart data with the given productId. * * @param {Object} options - The options object containing the productId. * @param {string} options.productId - The ID of the product to be deleted from the cart. * @returns {boolean} - Returns `true`. */ const deleteItemCart = ({ productId }) => { let cart = getCart() delete cart[productId] setCart(cart) return true } export { getCart, getItemCart, updateItemCart, deleteItemCart }