const state = { products: [], selectedProduct: null } const getters = { getProducts (state) { return state.products }, getSelectedProduct(state) { return state.selectedProduct }, getVariants(state) { return !!state.selectedProduct ? state.selectedProduct.variants : [] } } const mutations = { pushProducts(state, payload) { state.products = [...payload.products] }, setSelectedProduct(state, payload) { state.selectedProduct = payload.product } } const actions = { fetchProducts ({ commit }) { let pos = new openerp.web.Model('eiru.pos') pos.call('get_products').then(response => { commit('pushProducts', { products: response }) }).fail(error => { console.log(error) }) }, selectProduct({ commit, dispatch }, payload) { if (payload.data.variant_count > 1) { commit('setSelectedProduct', { product: payload.data }) } else { dispatch('addToCart', { product: payload.data.variants[0] }) } }, selectVariant({ commit, dispatch }, payload) { commit('setSelectedProduct', { product: null }) dispatch('addToCart', { product: payload.data }) } } export default { state, getters, mutations, actions }