import { Map, List, fromJS } from "immutable"; const defaultState = Map({ fetching: false, searching: false, torrents: List(), searchResults: List() }); const handlers = { TORRENTS_FETCH_PENDING: state => state.set("fetching", true), TORRENTS_FETCH_FULFILLED: (state, action) => state.merge( fromJS({ fetching: false, torrents: action.payload.response.data }) ), TORRENTS_SEARCH_PENDING: state => state.set("searching", true), TORRENTS_SEARCH_FULFILLED: (state, action) => state.merge( fromJS({ searching: false, searchResults: action.payload.response.data }) ) }; export default (state = defaultState, action) => handlers[action.type] ? handlers[action.type](state, action) : state;