gab-social/app/javascript/gabsocial/reducers/shop.js

42 lines
1.1 KiB
JavaScript

import {
SHOP_FEATURED_PRODUCTS_FETCH_REQUEST,
SHOP_FEATURED_PRODUCTS_FETCH_SUCCESS,
SHOP_FEATURED_PRODUCTS_FETCH_FAIL,
} from '../actions/shop'
import {
Map as ImmutableMap,
List as ImmutableList,
fromJS,
} from 'immutable'
const initialState = ImmutableMap({
featured: ImmutableMap({
items: ImmutableList(),
isError: false,
isLoading: false,
}),
})
export default function suggestionsReducer(state = initialState, action) {
switch(action.type) {
case SHOP_FEATURED_PRODUCTS_FETCH_REQUEST:
return state.withMutations((map) => {
map.setIn([action.listType, 'isError'], false)
map.setIn([action.listType, 'isLoading'], true)
})
case SHOP_FEATURED_PRODUCTS_FETCH_SUCCESS:
return state.withMutations((map) => {
map.setIn([action.listType, 'items'], action.items)
map.setIn([action.listType, 'isError'], false)
map.setIn([action.listType, 'isLoading'], false)
})
case SHOP_FEATURED_PRODUCTS_FETCH_FAIL:
return state.withMutations((map) => {
map.setIn([action.listType, 'isError'], true)
map.setIn([action.listType, 'isLoading'], false)
})
default:
return state
}
}