listReducer.js 3.02 KB
'use strict';

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

const {
	SET_SHOW_INDEX,

	// 列表
    ORDER_RESET_STATE_WHEN_REFRESH,
    GET_ORDER_LIST_REQUEST,
    GET_ORDER_LIST_SUCCESS,
    GET_ORDER_LIST_FAILURE,

    //取消订单
    CANCEL_ORDER_REQUEST,
    CANCEL_ORDER_SUCCESS,
    CANCEL_ORDER_FAILURE,

    //取消订单原因
    GET_CANCEL_REASON_REQUEST,
    GET_CANCEL_REASON_SUCCESS,
    GET_CANCEL_REASON_FAILURE,

    //再次购买
    BUY_AGAIN_REQUEST,
    BUY_AGAIN_SUCCESS,
    BUY_AGAIN_FAILURE,

	//删除订单
	DELETE_ORDER_REQUEST,
	DELETE_ORDER_SUCCESS,
	DELETE_ORDER_FAILURE,

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

const initialState = new InitialState;

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

		case ORDER_RESET_STATE_WHEN_REFRESH: {
			let newState = state.setIn([type, 'list'], Immutable.fromJS(list))
			.setIn([type, 'currentPage'], 0)
			.setIn([type, 'error'], null)
			.setIn([type, 'isFetching'], 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);
    	}

		/****************************
		*** 	取消订单
		*****************************/
		// case CANCEL_ORDER_REQUEST: {
		//
		// }
		// case CANCEL_ORDER_SUCCESS: {
		//
		// }
		// case CANCEL_ORDER_FAILURE: {
		//
		// }
		// case GET_CANCEL_REASON_REQUEST: {
		//
		// }
		// case GET_CANCEL_REASON_SUCCESS: {
		//
		// }
		// case GET_CANCEL_REASON_FAILURE: {
		//
		// }

		/****************************
		*** 	删除订单
		*****************************/
		case DELETE_ORDER_REQUEST: {

		}
		case DELETE_ORDER_SUCCESS: {

		}
		case DELETE_ORDER_FAILURE: {

		}
		/****************************
		*** 	再次购买
		*****************************/
		case BUY_AGAIN_REQUEST: {

		}
		case BUY_AGAIN_SUCCESS: {

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

    }

    return state;
}