From ae3c1b003c8f211ae4e5ba2ce667557063ffa3b1 Mon Sep 17 00:00:00 2001 From: Thomas Thune Hansen Date: Thu, 5 Apr 2018 13:56:40 +0200 Subject: [PATCH 1/3] Use payment store for paymentmethods --- core/components/blocks/Checkout/Payment.vue | 2 +- core/store/modules/payment/index.js | 15 +++++++++++++++ src/extensions/payment-cash-on-delivery/index.js | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/core/components/blocks/Checkout/Payment.vue b/core/components/blocks/Checkout/Payment.vue index 0378bb8c5c..e70a13bf92 100644 --- a/core/components/blocks/Checkout/Payment.vue +++ b/core/components/blocks/Checkout/Payment.vue @@ -32,7 +32,7 @@ export default { currentUser: state => state.user.current }), ...mapGetters({ - paymentMethods: 'cart/paymentMethods' + paymentMethods: 'payment/paymentMethods' }) }, created () { diff --git a/core/store/modules/payment/index.js b/core/store/modules/payment/index.js index dfe8a37a88..43d99a32cc 100644 --- a/core/store/modules/payment/index.js +++ b/core/store/modules/payment/index.js @@ -2,5 +2,20 @@ export default { namespaced: true, state: { methods: [] + }, + mutations: { + addMethod (state, paymentMethod) { + state.methods.push(paymentMethod) + } + }, + actions: { + addMethod ({commit}, paymentMethod) { + commit('addMethod', paymentMethod) + } + }, + getters: { + paymentMethods (state) { + return state.methods + } } } diff --git a/src/extensions/payment-cash-on-delivery/index.js b/src/extensions/payment-cash-on-delivery/index.js index b028f224e8..0829d3be86 100755 --- a/src/extensions/payment-cash-on-delivery/index.js +++ b/src/extensions/payment-cash-on-delivery/index.js @@ -25,7 +25,7 @@ export default function (app, router, store, config) { 'offline': true } - app.$store.state.payment.methods.push(paymentMethodConfig) + app.$store.dispatch('payment/addMethod', paymentMethodConfig) // Mount the info component when required. EventBus.$on('checkout-payment-method-changed', (paymentMethodCode) => { From cf940ac54a6d55b3c3324110f359cafbbec51096 Mon Sep 17 00:00:00 2001 From: Thomas Thune Hansen Date: Fri, 6 Apr 2018 09:39:28 +0200 Subject: [PATCH 2/3] Remove unused getters, Add getter for shipping store --- core/store/modules/cart/getters.js | 14 -------------- core/store/modules/shipping/index.js | 5 +++++ 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/core/store/modules/cart/getters.js b/core/store/modules/cart/getters.js index 6c950041a9..656e4a5e73 100644 --- a/core/store/modules/cart/getters.js +++ b/core/store/modules/cart/getters.js @@ -44,19 +44,5 @@ export default { return _.sumBy(state.cartItems, (p) => { return p.qty }) - }, - shippingMethods (state) { - if (state.shipping instanceof Array) { - return state.shipping - } else { - return [state.shipping] - } - }, - paymentMethods (state) { - if (state.payment instanceof Array) { - return state.payment - } else { - return [state.payment] - } } } diff --git a/core/store/modules/shipping/index.js b/core/store/modules/shipping/index.js index ba00cf68a2..9703fdbca0 100644 --- a/core/store/modules/shipping/index.js +++ b/core/store/modules/shipping/index.js @@ -4,5 +4,10 @@ export default { namespaced: true, state: { methods: shippingtMethods + }, + getters: { + shippingMethods (state) { + return state.methods + } } } From 87d38f1970b40d680b840161e81b9956e7afbb47 Mon Sep 17 00:00:00 2001 From: Thomas Thune Hansen Date: Fri, 6 Apr 2018 11:01:01 +0200 Subject: [PATCH 3/3] Updated references to old shippingMethods getter --- core/components/blocks/Checkout/Shipping.vue | 4 ++-- core/store/modules/cart/actions.js | 15 ++++++++------- core/store/modules/cart/mutations.js | 8 ++++---- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/core/components/blocks/Checkout/Shipping.vue b/core/components/blocks/Checkout/Shipping.vue index 0b4e9f753b..d24ed77f18 100644 --- a/core/components/blocks/Checkout/Shipping.vue +++ b/core/components/blocks/Checkout/Shipping.vue @@ -51,12 +51,12 @@ export default { currentUser: state => state.user.current }), ...mapGetters({ - shippingMethods: 'cart/shippingMethods' + shippingMethods: 'shipping/shippingMethods' }) }, mounted () { if (!this.shipping.shippingMethod || this.notInMethods(this.shipping.shippingMethod)) { - this.shipping.shippingMethod = this.shippingMethods[0].method_code + this.shipping.shippingMethod = this.shippingMethods.find(item => item.default).method_code } }, methods: { diff --git a/core/store/modules/cart/actions.js b/core/store/modules/cart/actions.js index 88b2b518b0..3a248e1087 100644 --- a/core/store/modules/cart/actions.js +++ b/core/store/modules/cart/actions.js @@ -143,14 +143,15 @@ export default { load (context) { console.log('Loading cart ...') const commit = context.commit - const rootState = context.rootState const state = context.state - if (!state.shipping.code) { - state.shipping = rootState.shipping.methods.find((el) => { if (el.default === true) return el }) // TODO: use commit() instead of modifying the state in actions + if (!state.shipping.method_code) { + let shippingMethod = context.rootGetters['shipping/shippingMethods'].find(item => item.default) + commit(types.CART_UPD_SHIPPING, shippingMethod) } if (!state.payment.code) { - state.payment = rootState.payment.methods.find((el) => { if (el.default === true) return el }) + let paymentMethod = context.rootGetters['payment/paymentMethods'].find(item => item.default) + commit(types.CART_UPD_PAYMENT, paymentMethod) } global.db.cartsCollection.getItem('current-cart', (err, storedItems) => { if (err) throw new Error(err) @@ -265,7 +266,7 @@ export default { silent: true }, { root: true }).then(task => { let backendMethods = task.result - let paymentMethods = rootStore.state.payment.methods.slice(0) // copy + let paymentMethods = context.rootGetters['payment/paymentMethods'].slice(0) // copy let uniqueBackendMethods = [] for (let i = 0; i < backendMethods.length; i++) { if (!paymentMethods.find(item => item.code === backendMethods[i].code)) { @@ -305,8 +306,8 @@ export default { if (config.cart.synchronize_totals && (typeof navigator !== 'undefined' ? navigator.onLine : true)) { if (!methodsData) { let country = rootStore.state.checkout.shippingDetails.country ? rootStore.state.checkout.shippingDetails.country : config.tax.defaultCountry - let shipping = context.getters.shippingMethods[0] - let payment = context.getters.paymentMethods[0] + let shipping = context.rootGetters['shipping/shippingMethods'].find(item => item.default) + let payment = context.rootGetters['payment/paymentMethods'].find(item => item.default) methodsData = { country: country, method_code: shipping ? shipping.method_code : null, diff --git a/core/store/modules/cart/mutations.js b/core/store/modules/cart/mutations.js index 256518b59c..fd16f7e085 100644 --- a/core/store/modules/cart/mutations.js +++ b/core/store/modules/cart/mutations.js @@ -49,8 +49,8 @@ export default { } state.cartSavedAt = new Date() }, - [types.CART_UPD_SHIPPING] (state, shippingMethods) { - state.shipping = shippingMethods + [types.CART_UPD_SHIPPING] (state, shippingMethod) { + state.shipping = shippingMethod state.cartSavedAt = new Date() }, [types.CART_LOAD_CART] (state, storedItems) { @@ -71,8 +71,8 @@ export default { state.platformTotalSegments = platformTotalSegments EventBus.$emit('cart-after-updatetotals', { platformTotals: totals, platformTotalSegments: platformTotalSegments }) }, - [types.CART_UPD_PAYMENT] (state, paymentMethods) { - state.payment = paymentMethods + [types.CART_UPD_PAYMENT] (state, paymentMethod) { + state.payment = paymentMethod state.cartSavedAt = new Date() } }