react-redux-fetch
Version:
A declarative and customizable way to fetch data for React components and manage that data in the Redux state
34 lines (29 loc) • 1.06 kB
Flow
import immutable from 'seamless-immutable';
import { FETCH } from '../constants/actionTypes';
import { INIT } from '../constants/request';
import fetchRequest from '../utils/fetchRequest';
import fetchFulfill from '../utils/fetchFulfill';
import fetchReject from '../utils/fetchReject';
import createRemoveFromListAction from '../utils/createRemoveFromListAction';
const INITIAL_STATE = {
...INIT,
value: null,
request: { meta: null },
};
const deleteReducer = (state = immutable(INITIAL_STATE), action) => {
switch (action.type) {
case FETCH.for('delete').REQUEST:
return fetchRequest(state, action);
case FETCH.for('delete').FULFILL:
if (action.request.meta && action.request.meta.removeFromList && state.value) {
const newAction = createRemoveFromListAction(state, action);
return fetchFulfill(state, newAction);
}
return fetchFulfill(state, action);
case FETCH.for('delete').REJECT:
return fetchReject(state, action);
default:
return state;
}
};
export default deleteReducer;