Files
Readarr/frontend/src/Store/Selectors/createClientSideCollectionSelector.js
2022-08-15 14:04:29 +01:00

30 lines
980 B
JavaScript

import _ from 'lodash';
import { createSelector } from 'reselect';
import filterCollection from 'Utilities/Array/filterCollection';
import sortCollection from 'Utilities/Array/sortCollection';
import createCustomFiltersSelector from './createCustomFiltersSelector';
function createClientSideCollectionSelector(section, uiSection) {
return createSelector(
(state) => _.get(state, section),
(state) => _.get(state, uiSection),
createCustomFiltersSelector(section, uiSection),
(sectionState, uiSectionState = {}, customFilters) => {
const state = Object.assign({}, sectionState, uiSectionState, { customFilters });
const filtered = filterCollection(state.items, state);
const sorted = sortCollection(filtered, state);
return {
...sectionState,
...uiSectionState,
customFilters,
items: sorted,
totalItems: state.items.length
};
}
);
}
export default createClientSideCollectionSelector;