From 1cde35f928163fb6783d2bb57f2a77b922f9b0f1 Mon Sep 17 00:00:00 2001 From: Leonardo Matos Date: Thu, 29 Aug 2019 20:07:45 -0300 Subject: [PATCH] feat(emitter): emit constructor events on methods --- src/methods/add-item.js | 2 ++ src/methods/clear.js | 3 +++ src/methods/increase-item-qnt.js | 5 ++++- src/methods/remove-item.js | 3 +++ src/methods/save.js | 3 +++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/methods/add-item.js b/src/methods/add-item.js index 5d8a5ff..39571c5 100644 --- a/src/methods/add-item.js +++ b/src/methods/add-item.js @@ -1,5 +1,6 @@ import { randomObjectId } from '@ecomplus/utils' import fixItemQuantity from './../lib/fix-item-quantity' +import emitter from './../lib/emitter' // add item to cart export default (self, newItem, save = true) => { @@ -43,6 +44,7 @@ export default (self, newItem, save = true) => { if (save) { self.save() } + emitter('addItem', { cart, item: fixedItem }) return fixedItem } diff --git a/src/methods/clear.js b/src/methods/clear.js index da3b6d0..d27c19a 100644 --- a/src/methods/clear.js +++ b/src/methods/clear.js @@ -1,6 +1,9 @@ +import emitter from './../lib/emitter' + export default ({ cart, save }) => { // empty the items array and save cart.items = [] + emitter('clear', { cart }) return save() } diff --git a/src/methods/increase-item-qnt.js b/src/methods/increase-item-qnt.js index 20684e4..8a90f3f 100644 --- a/src/methods/increase-item-qnt.js +++ b/src/methods/increase-item-qnt.js @@ -1,8 +1,10 @@ import fixItemQuantity from './../lib/fix-item-quantity' +import emitter from './../lib/emitter' export default (self, itemId, quantity = 1, save = true) => { + const { cart } = self // find respective item on list by ID - const item = self.cart.items.find(({ _id }) => _id === itemId) + const item = cart.items.find(({ _id }) => _id === itemId) if (item) { item.quantity += quantity fixItemQuantity(item) @@ -12,6 +14,7 @@ export default (self, itemId, quantity = 1, save = true) => { } else { return null } + emitter('increaseItemQnt', { cart, item }) return item } diff --git a/src/methods/remove-item.js b/src/methods/remove-item.js index 5b25f29..1801130 100644 --- a/src/methods/remove-item.js +++ b/src/methods/remove-item.js @@ -1,3 +1,5 @@ +import emitter from './../lib/emitter' + export default (self, itemId, save = true) => { // find respective item on list by ID const { cart } = self @@ -8,6 +10,7 @@ export default (self, itemId, save = true) => { // remove from items array cart.items.splice(i, 1) cart.save() + emitter('removeItemQnt', { cart, item }) return item } } diff --git a/src/methods/save.js b/src/methods/save.js index b6fd4d3..686cf2e 100644 --- a/src/methods/save.js +++ b/src/methods/save.js @@ -1,3 +1,5 @@ +import emitter from './../lib/emitter' + export default self => { const { cart, storageKey, localStorage } = self // fix cart subtotal first @@ -9,6 +11,7 @@ export default self => { if (typeof localStorage === 'object' && localStorage) { localStorage.setItem(storageKey, JSON.stringify(cart)) } + emitter('save', { cart }) return self }