diff --git a/frontend/src/Store/Actions/Creators/createHandleActions.js b/frontend/src/Store/Actions/Creators/createHandleActions.js index c3315ce94..0883f8e08 100644 --- a/frontend/src/Store/Actions/Creators/createHandleActions.js +++ b/frontend/src/Store/Actions/Creators/createHandleActions.js @@ -42,6 +42,7 @@ export default function createHandleActions(handlers, defaultState, section) { if (_.isArray(payload.data)) { newState.items = payload.data; + newState.itemMap = _.zipObject(_.map(payload.data, 'id'), _.range(payload.data.length)); } else { newState.item = payload.data; } @@ -75,6 +76,7 @@ export default function createHandleActions(handlers, defaultState, section) { newState.items.splice(index, 1, { ...item, ...otherProps }); } else if (!updateOnly) { newState.items.push({ ...otherProps }); + newState.itemMap = _.zipObject(_.map(newState.items, 'id'), _.range(newState.items.length)); } return updateSectionState(state, payloadSection, newState); @@ -111,6 +113,8 @@ export default function createHandleActions(handlers, defaultState, section) { newState.items = [...newState.items]; _.remove(newState.items, { id: payload.id }); + newState.itemMap = _.zipObject(_.map(newState.items, 'id'), _.range(newState.items.length)); + return updateSectionState(state, payloadSection, newState); } diff --git a/frontend/src/Store/Selectors/createArtistSelector.js b/frontend/src/Store/Selectors/createArtistSelector.js index 4b45118b8..104ef83e3 100644 --- a/frontend/src/Store/Selectors/createArtistSelector.js +++ b/frontend/src/Store/Selectors/createArtistSelector.js @@ -1,12 +1,12 @@ import { createSelector } from 'reselect'; -import createAllArtistSelector from './createAllArtistSelector'; function createArtistSelector() { return createSelector( (state, { artistId }) => artistId, - createAllArtistSelector(), - (artistId, allArtists) => { - return allArtists.find((artist) => artist.id === artistId ); + (state) => state.artist.itemMap, + (state) => state.artist.items, + (artistId, itemMap, allArtists) => { + return allArtists[itemMap[artistId]]; } ); }