accountSettlementReducer.js 1.46 KB
'use strict';

import AccountSettlementInitialState from './accountSettlementInitialState'
import Immutable, {List, Record} from 'immutable';

const {
    ACCOUNT_LIST_REQUEST,
    ACCOUNT_LIST_SUCCESS,
    ACCOUNT_LIST_FAILURE,
    ACCOUNT_LIST_CLEAN,
    SWITCH_SHOP,
    LOGOUT,
} = require('../../constants/actionTypes').default;

const initialState = new AccountSettlementInitialState;

export default function messageReducer(state = initialState, action) {

    if (!(state instanceof AccountSettlementInitialState)) return initialState.merge(state);
    switch (action.type) {
        case ACCOUNT_LIST_REQUEST: {
            let nextState =  state.set('isFetching', true)
                .set('error', null);
            return nextState;
        }
            break;
        case ACCOUNT_LIST_SUCCESS: {
            let {totalAmount, list} = action.payload;
            let nextState =  state.set('isFetching', false)
                .set('error', null)
                .set('sum', totalAmount || '0.00')
                .set('list', Immutable.fromJS(list || []));
            return nextState;
        }
            break;
        case ACCOUNT_LIST_FAILURE: {
            let nextState = state.set('isFetching', false)
                .set('error', action.playload);
            return nextState;
        }
            break;
        case ACCOUNT_LIST_CLEAN:
        case SWITCH_SHOP:
        case LOGOUT:
            return initialState;
            break;
    }

    return state;
}