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()
}
}
|