listReducer.js 1.82 KB
'use strict';

import InitialState from './listInitialState';
import Immutable, {Map} from 'immutable';

const {
	SET_DEFAULT_PAGE_INDEX,
	// 列表
    ORDER_RESET_STATE_WHEN_REFRESH,
    GET_ORDER_LIST_REQUEST,
    GET_ORDER_LIST_SUCCESS,
    GET_ORDER_LIST_FAILURE,

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

const initialState = new InitialState;

export default function listReducer(state=initialState, action) {
    switch(action.type) {
		case SET_DEFAULT_PAGE_INDEX:{
			return state.set('defaultPageIndex', action.payload);
		}
			break;

		case ORDER_RESET_STATE_WHEN_REFRESH: {
			let type = action.payload;
			let newState = state.setIn([type, 'currentPage'], 0)
			.setIn([type, 'error'], null)
			.setIn([type, 'isFetching'], false)
			.setIn([type, 'endReached'], false);
			return newState;
		}
		/****************************
		*** 	订单列表
		*****************************/
    	case  GET_ORDER_LIST_REQUEST: {
			let type = action.payload;
    		return state.setIn([type, 'isFetching'], true)
			.setIn([type, 'firstLoad'], false);
    	}
    	case GET_ORDER_LIST_SUCCESS: {
			let {json, type} = action.payload;
            let {
                list,
                currentPage,
                pageCount,
                total,
                endReached,
            } = json;
            let newState = state.setIn([type, 'list'], Immutable.fromJS(list))
			.setIn([type, 'currentPage'], currentPage)
			.setIn([type, 'pageCount'], pageCount)
			.setIn([type, 'total'], total)
			.setIn([type, 'endReached'], endReached)
			.setIn([type, 'error'], null)
			.setIn([type, 'isFetching'], false)

            return newState;
    	}
    	case GET_ORDER_LIST_FAILURE: {
			let {error,type} = action.payload;
			return state.setIn([type, 'isFetching'], false)
			.setIn([type, 'error'], error);
    	}

    }

    return state;
}