import { List } from 'immutable';
import {
FETCH_LABELS_PENDING,
FETCH_LABELS_ERROR,
FETCH_LABELS_SUCCESS,
CREATE_CRATE_SUCCESS,
} from '../actions/ActionTypes';
import * as RequestStatus from '../constants/requestStatus';
import Bundles from '../records/Bundles';
export default (state = new Bundles(), { type, payload }) => {
switch (type) {
case FETCH_LABELS_PENDING:
return state.merge({
status: RequestStatus.PENDING,
});
case FETCH_LABELS_ERROR:
return state.merge({
status: RequestStatus.ERROR,
});
case FETCH_LABELS_SUCCESS:
return new Bundles({
status: RequestStatus.SUCCESS,
bundlesMap: payload.reduce(
(acc, bundle) => acc.set(bundle.id, bundle),
state.bundlesMap
),
});
case CREATE_CRATE_SUCCESS:
return state.setIn(['bundlesMap', payload.id], payload);
case DELETE_LABEL_PENDING:
return state.setIn(
['bundlesMap', payload, 'status'],
RequestStatus.PENDING
);
default:
return state;
}
})