mirror of
https://github.com/Readarr/Readarr.git
synced 2026-03-21 16:54:15 -04:00
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
import { createSelector, createSelectorCreator, defaultMemoize } from 'reselect';
|
|
import hasDifferentItemsOrOrder from 'Utilities/Object/hasDifferentItemsOrOrder';
|
|
import createBooksClientSideCollectionSelector from './createBooksClientSideCollectionSelector';
|
|
|
|
function createUnoptimizedSelector(uiSection) {
|
|
return createSelector(
|
|
createBooksClientSideCollectionSelector(uiSection),
|
|
(books) => {
|
|
const items = books.items.map((s) => {
|
|
const {
|
|
id,
|
|
title,
|
|
authorTitle
|
|
} = s;
|
|
|
|
return {
|
|
id,
|
|
title,
|
|
authorTitle
|
|
};
|
|
});
|
|
|
|
return {
|
|
...books,
|
|
items
|
|
};
|
|
}
|
|
);
|
|
}
|
|
|
|
function bookListEqual(a, b) {
|
|
return hasDifferentItemsOrOrder(a, b);
|
|
}
|
|
|
|
const createBookEqualSelector = createSelectorCreator(
|
|
defaultMemoize,
|
|
bookListEqual
|
|
);
|
|
|
|
function createBookClientSideCollectionItemsSelector(uiSection) {
|
|
return createBookEqualSelector(
|
|
createUnoptimizedSelector(uiSection),
|
|
(book) => book
|
|
);
|
|
}
|
|
|
|
export default createBookClientSideCollectionItemsSelector;
|