mirror of
https://github.com/Readarr/Readarr.git
synced 2026-01-31 01:02:20 -05:00
30 lines
980 B
JavaScript
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;
|