messageReducer.js 2.26 KB
/**
 * # guideReducer.js
 *
 * The reducer for all the actions from the various log states
 */
'use strict';
/**
 * ## Imports
 *
 * InitialState
 */
import InitialState from './messageInitialState';
import Immutable, {List, Record} from 'immutable';


const initialState = new InitialState;
const {
    MESSAGE_DETAIL,
    REQUEST_MSG_LIST,
    REQUEST_MSG_LIST_SUCCESS,
    REQUEST_MSG_LIST_FAILURE,
    BATCH_SET_MSG_IS_READ,
    BATCH_SET_MSG_IS_READ_SUCCESS,
    BATCH_SET_MSG_IS_READ_FAILURE,
    REQUEST_MSG_NUM,
    REQUEST_MSG_NUM_SUCCESS,
    REQUEST_MSG_NUM_FAILURE,
    SWITCH_BRAND,
    LOGOUT,
} = require('../../constants/actionTypes').default;
/**
 * ## guideReducer function
 * @param {Object} state - initialState
 * @param {Object} action - type and payload
 */
export default function messageReducer(state = initialState, action) {
    if (!(state instanceof InitialState)) return initialState.merge(state);

    switch (action.type) {
		case MESSAGE_DETAIL: {
            let nextState = state.set('messageDetail', action.payload);
			return nextState;
		}

        case REQUEST_MSG_LIST: {
            let nextState = state.set('isFetching', true)
				.set('error', null);
			return nextState;
        }

        case REQUEST_MSG_LIST_SUCCESS: {
            let nextState = state.set('isFetching', false)
                .set('error', null)
                .set('messageList', Immutable.fromJS(action.payload.list));
            return nextState;
        }

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

        case REQUEST_MSG_NUM_SUCCESS: {
            let nextState = state.set('unreadNum', action.payload);
            return nextState;
        }

        case BATCH_SET_MSG_IS_READ_SUCCESS: {
            // console.log(state);
            let nextState = state.setIn(['messageList', state.messageDetail, 'isRead'], true);
            // console.log(nextState);
            return nextState;
        }

        case REQUEST_MSG_NUM:
        case REQUEST_MSG_NUM_FAILURE:
        case BATCH_SET_MSG_IS_READ:
        case BATCH_SET_MSG_IS_READ_FAILURE:
            return state;

        case SWITCH_BRAND:
        case LOGOUT:
            return initialState;

    }

    return state;
}