recommendReducer.js 1.73 KB
'use strict';

import InitialState from './recommendInitialState';
import Immutable, {List} from 'immutable';

const {
	HISTORY_SORT_LIST_REQUEST,
    HISTORY_SORT_LIST_SUCCESS,
    HISTORY_SORT_LIST_FAILURE,

	HISTORY_LIST_REQUEST,
    HISTORY_LIST_SUCCESS,
    HISTORY_LIST_FAILURE,

	SET_SELECTED_CATEGORY,
} = require('../../constants/actionTypes').default;

const initialState = new InitialState;

export default function browseReducer(state=initialState, action) {
    switch(action.type) {
    	case HISTORY_LIST_REQUEST: {
    		return state.set('isFetching', true)
			.set('error', null)
			.set('curCategoryID', action.payload);
    	}
    	case HISTORY_SORT_LIST_REQUEST:{
    		return state.set('isFetching', true)
			.set('error', null);
    	}

    	case HISTORY_LIST_SUCCESS: {
    		let {
				productList,
				currentPage,
				page_total,
			} = action.payload;
			let showEmpty = productList.length == 0;

			let newState = state.set('isFetching', false)
			.set('error', null)
			.set('productList', Immutable.fromJS(productList))
			.set('page_total', Immutable.fromJS(page_total))
			.set('currentPage', currentPage)
			.set('showEmpty', showEmpty);
			return newState;
    	}

		case HISTORY_LIST_FAILURE:
		case HISTORY_SORT_LIST_FAILURE:{
			return state.set('isFetching', false)
			.set('error', action.payload);
		}

		case HISTORY_SORT_LIST_SUCCESS: {
			return state.set('isFetching', false)
			.set('categoryList', Immutable.fromJS(action.payload));
		}
		case SET_SELECTED_CATEGORY: {
			let {productList, index} = action.payload;
			return state.set('selectedCategoryIndex', index)
			.set('currentPage', 0)
			.set('productList',List());
		}
    }

    return state;
}