mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00

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)
46 lines
1.0 KiB
JavaScript
46 lines
1.0 KiB
JavaScript
import { createSelector, createSelectorCreator, defaultMemoize } from 'reselect';
|
|
import createClientSideCollectionSelector from './createClientSideCollectionSelector';
|
|
import hasDifferentItemsOrOrder from 'Utilities/Object/hasDifferentItemsOrOrder';
|
|
|
|
function createUnoptimizedSelector(uiSection) {
|
|
return createSelector(
|
|
createClientSideCollectionSelector('movies', uiSection),
|
|
(movies) => {
|
|
const items = movies.items.map((s) => {
|
|
const {
|
|
id,
|
|
sortTitle
|
|
} = s;
|
|
|
|
return {
|
|
id,
|
|
sortTitle
|
|
};
|
|
});
|
|
|
|
return {
|
|
...movies,
|
|
items
|
|
};
|
|
}
|
|
);
|
|
}
|
|
|
|
function movieListEqual(a, b) {
|
|
return hasDifferentItemsOrOrder(a, b);
|
|
}
|
|
|
|
const createMovieEqualSelector = createSelectorCreator(
|
|
defaultMemoize,
|
|
movieListEqual
|
|
);
|
|
|
|
function createMovieClientSideCollectionItemsSelector(uiSection) {
|
|
return createMovieEqualSelector(
|
|
createUnoptimizedSelector(uiSection),
|
|
(movies) => movies
|
|
);
|
|
}
|
|
|
|
export default createMovieClientSideCollectionItemsSelector;
|