import * as ACTIONS from 'constants/action_types'; const reducers = {}; const defaultState = {}; reducers[ACTIONS.FETCH_AVAILABILITY_STARTED] = (state, action) => { const { uri } = action.data; const newFetching = Object.assign({}, state.fetching); newFetching[uri] = true; return Object.assign({}, state, { fetching: newFetching, }); }; reducers[ACTIONS.FETCH_AVAILABILITY_COMPLETED] = (state, action) => { const { uri, availability } = action.data; const newFetching = Object.assign({}, state.fetching); const newAvailabilityByUri = Object.assign({}, state.byUri); delete newFetching[uri]; newAvailabilityByUri[uri] = availability; return Object.assign({}, state, { fetching: newFetching, byUri: newAvailabilityByUri, }); }; export default function reducer(state = defaultState, action) { const handler = reducers[action.type]; if (handler) return handler(state, action); return state; }