import { ALBUMS_FETCH_REQUEST, ALBUMS_FETCH_SUCCESS, ALBUMS_FETCH_FAIL, ALBUM_CREATE_SUCCESS, ALBUM_REMOVE_REQUEST, } from '../actions/albums' import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable' const importAlbum = (state, album) => state.set(album.id, fromJS(album)) const importAlbums = (state, albums) => state.withMutations((mutable) => albums.forEach((album) => importAlbum(mutable, album))) const initialState = ImmutableMap() export default function albums(state = initialState, action) { switch(action.type) { case ALBUMS_FETCH_SUCCESS: return importAlbums(state, action.albums) case ALBUM_CREATE_SUCCESS: return importAlbum(state, action.album) case ALBUM_REMOVE_REQUEST: return state.delete(action.albumId) default: return state } }