|
|
import * as Types from './types';
|
|
|
import { find } from 'lodash';
|
|
|
|
|
|
import { defaultProduct } from './index';
|
|
|
|
|
|
function ensureProduct(state, productId) {
|
|
|
if (state.products[productId] === undefined) {
|
|
|
state.products = {...state.products, [productId]: defaultProduct()};
|
|
|
}
|
|
|
}
|
|
|
function ensureSelectedProduct(state, productId) {
|
|
|
if (!state.selectedProductInfo || state.selectedProductInfo.productId !== productId) {
|
|
|
ensureProduct(state, productId);
|
|
|
|
|
|
state.selectedProductInfo = {
|
|
|
productId,
|
|
|
product: state.product,
|
|
|
product: state.products[productId],
|
|
|
sizeId: null,
|
|
|
storageId: null,
|
|
|
size: {},
|
...
|
...
|
@@ -14,12 +23,15 @@ function ensureSelectedProduct(state, productId) { |
|
|
}
|
|
|
|
|
|
export default {
|
|
|
[Types.ENSURE_PRODUCT_DETAIL](state, { productId }) {
|
|
|
ensureProduct(state, productId);
|
|
|
},
|
|
|
[Types.UPDATE_PRODUCT_DETAIL](state, payload) {
|
|
|
state.product = payload;
|
|
|
state.products = {...state.products, [payload.product_id]: payload};
|
|
|
ensureSelectedProduct(state, state.product.product_id);
|
|
|
},
|
|
|
[Types.UPDATE_PRODUCT_TOP3](state, { productId, topList }) {
|
|
|
state.topList = {...state.topList, [productId]: topList};
|
|
|
state.topLists = {...state.topLists, [productId]: topList};
|
|
|
},
|
|
|
[Types.UPDATE_PRODUCT_FAV](state, { productId, isFav }) {
|
|
|
state.fav = {...state.fav, [productId]: isFav};
|
...
|
...
|
|