diff options
Diffstat (limited to 'iridescence/src/store')
| -rw-r--r-- | iridescence/src/store/index.js | 49 | 
1 files changed, 36 insertions, 13 deletions
| diff --git a/iridescence/src/store/index.js b/iridescence/src/store/index.js index 48cae11..e2d970d 100644 --- a/iridescence/src/store/index.js +++ b/iridescence/src/store/index.js @@ -24,6 +24,13 @@ export default new Vuex.Store({              .includes(state.searchTerm.toLowerCase());          })          .sort(state.compare); +    }, +    cartTotal(state) { +      let cents = state.products +        .filter(p => state.cart[p.id]) +        .map(p => p.cents * state.cart[p.id]) +        .reduce((acc, cur) => acc + cur, 0); +      return "$ " + (cents / 100).toFixed(2);      }    },    mutations: { @@ -34,22 +41,38 @@ export default new Vuex.Store({        state.productDetailId = id;      },      cartItem(state, { id, by }) { +      let newCount = 1;        if (state.cart[id]) { -        let newCount = (state.cart[id] += by); -        if (newCount <= 0) { -          // remove from cart entirely -          delete state.cart[id]; -          return; -        } -        state.cart = { -          ...state.cart, -          [id]: newCount -        }; +        newCount = state.cart[id] += by; +        //if (newCount <= 0) { +        //  // remove from cart entirely +        //  delete state.cart[id]; +        //  return; +        //} +        //state.cart = { +        //  ...state.cart, +        //  [id]: newCount +      } + +      let cart = { +        ...state.cart +      }; + +      if (newCount) { +        cart[id] = newCount;        } else { -        state.cart = { -          ...state.cart, -          [id]: 1 +        // remove entirely +        delete cart[id]; +      } +      state.cart = cart; +    }, +    removeItemFromCart(state, id) { +      if (state.cart[id]) { +        let cart = { +          ...state.cart          }; +        delete cart[id]; +        state.cart = cart;        }      },      compare(state, compare) { |