import { SUGGESTIONS_FETCH_REQUEST, SUGGESTIONS_FETCH_SUCCESS, SUGGESTIONS_FETCH_FAIL, SUGGESTIONS_DISMISS, } from '../actions/suggestions' import { Map as ImmutableMap, List as ImmutableList, fromJS, } from 'immutable' const initialState = ImmutableMap({ related: ImmutableMap({ items: ImmutableList(), isLoading: false, }), verified: ImmutableMap({ items: ImmutableList(), isLoading: false, }), }) export default function suggestionsReducer(state = initialState, action) { switch(action.type) { case SUGGESTIONS_FETCH_REQUEST: return state.setIn([action.suggestionType, 'isLoading'], true) case SUGGESTIONS_FETCH_SUCCESS: return state.withMutations((map) => { const items = fromJS(action.accounts.map(x => x.id)).sortBy(Math.random) map.setIn([action.suggestionType, 'items'], items) map.setIn([action.suggestionType, 'isLoading'], false) }) case SUGGESTIONS_FETCH_FAIL: return state.setIn([action.suggestionType, 'isLoading'], false) case SUGGESTIONS_DISMISS: return state.updateIn([action.suggestionType, 'items'], list => list.filterNot(id => id === action.id)) default: return state } }