import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import { calcTotalPrice } from '../../utils/calcTotalPrice'; import { getCartFromLS } from '../../utils/getCartFromLS'; import { CartItem, CartSliceState } from './types'; const initialState: CartSliceState = getCartFromLS(); const cartSlice = createSlice({ name: 'cart', initialState, reducers: { addItem(state, action: PayloadAction) { const findItem = state.items.find((obj) => obj.id === action.payload.id); if (findItem) { findItem.count++; } else { state.items.push({ ...action.payload, count: 1, }); } state.totalPrice = calcTotalPrice(state.items); }, minusItem(state, action: PayloadAction) { const findItem = state.items.find((obj) => obj.id === action.payload); if (findItem) { findItem.count--; } }, removeItem(state, action: PayloadAction) { state.items = state.items.filter((obj) => obj.id !== action.payload); }, clearItems(state) { state.items = []; state.totalPrice = 0; }, }, }); export const { addItem, removeItem, minusItem, clearItems } = cartSlice.actions; export default cartSlice.reducer;