Lidarr/frontend/src/Store/Selectors/createArtistClientSideCollectionItemsSelector.js
ta264 014eb27a26 Fixed: Speed up UI during refresh
Don't update state if we know items are equal to avoid reselections.
Don't pass LastInfoUpdate to frontend to prevent useless updates (the
field isn't used)
2020-10-13 23:19:28 -04:00

45 lines
1 KiB
JavaScript

import { createSelector, createSelectorCreator, defaultMemoize } from 'reselect';
import createClientSideCollectionSelector from './createClientSideCollectionSelector';
import hasDifferentItemsOrOrder from 'Utilities/Object/hasDifferentItemsOrOrder';
function createUnoptimizedSelector(uiSection) {
return createSelector(
createClientSideCollectionSelector('artist', uiSection),
(artist) => {
const items = artist.items.map((s) => {
const {
id,
sortName
} = s;
return {
id,
sortName
};
});
return {
...artist,
items
};
}
);
}
function artistListEqual(a, b) {
return hasDifferentItemsOrOrder(a, b);
}
const createArtistEqualSelector = createSelectorCreator(
defaultMemoize,
artistListEqual
);
function createArtistClientSideCollectionItemsSelector(uiSection) {
return createArtistEqualSelector(
createUnoptimizedSelector(uiSection),
(artist) => artist
);
}
export default createArtistClientSideCollectionItemsSelector;