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;