|
@@ -1,5 +1,5 @@
|
|
|
-import { PUSH_TO_CART, SET_CART_TOTAL } from '@/constants/mutationTypes'
|
|
|
-import { ADD_TO_CART, CHANGE_CART_TOTAL } from '@/constants/actionTypes'
|
|
|
+import { PUSH_TO_CART, PULL_FROM_CART, SET_CART_TOTAL } from '@/constants/mutationTypes'
|
|
|
+import { ADD_TO_CART, DECREASE_FROM_CART, REMOVE_FROM_CART, CHANGE_CART_TOTAL } from '@/constants/actionTypes'
|
|
|
|
|
|
const initialState = {
|
|
|
cartItems: [],
|
|
@@ -44,6 +44,20 @@ const mutations = {
|
|
|
|
|
|
state.cartItems = [payload, ...state.cartItems]
|
|
|
},
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param {*} state
|
|
|
+ * @param {*} payload
|
|
|
+ */
|
|
|
+ [PULL_FROM_CART] (state, payload) {
|
|
|
+ let productFoundIndex = state.cartItems.findIndex(item => item.id === payload.item.id)
|
|
|
+
|
|
|
+ if (payload.mode === 'partial') {
|
|
|
+ state.cartItems[productFoundIndex].quantity = state.cartItems[productFoundIndex].quantity - 1
|
|
|
+ } else {
|
|
|
+ state.cartItems.splice(productFoundIndex, 1)
|
|
|
+ }
|
|
|
+ },
|
|
|
/**
|
|
|
*
|
|
|
* @param {*} state
|
|
@@ -63,6 +77,28 @@ const actions = {
|
|
|
[ADD_TO_CART] ({ commit }, payload) {
|
|
|
commit(PUSH_TO_CART, payload)
|
|
|
},
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param {*} param0
|
|
|
+ * @param {*} payload
|
|
|
+ */
|
|
|
+ [DECREASE_FROM_CART] ({ commit }, payload) {
|
|
|
+ commit(PULL_FROM_CART, {
|
|
|
+ item: payload,
|
|
|
+ mode: 'partial'
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param {*} param0
|
|
|
+ * @param {*} payload
|
|
|
+ */
|
|
|
+ [REMOVE_FROM_CART] ({ commit }, payload) {
|
|
|
+ commit(PULL_FROM_CART, {
|
|
|
+ item: payload,
|
|
|
+ mode: 'full'
|
|
|
+ })
|
|
|
+ },
|
|
|
/**
|
|
|
*
|
|
|
* @param {*} param0
|