import {createSelector} from 'reselect'; import {filterTorrents} from '../util/filterTorrents'; import {searchTorrents} from '../util/searchTorrents'; import {sortTorrents} from '../util/sortTorrents'; const torrentListSearchString = state => state.ui.torrentList.searchString; const torrentListSortBy = state => state.ui.torrentList.sortBy; const torrentListFilterBy = state => state.ui.torrentList.filterBy; const selectedTorrents = state => state.torrents.selectedTorrents; const torrentList = state => state.torrents.torrents; const filteredTorrents = createSelector( torrentListFilterBy, torrentList, (torrentListFilterBy, torrentList) => { return filterTorrents(torrentList, torrentListFilterBy); } ); const searchedTorrents = createSelector( torrentListSearchString, filteredTorrents, (torrentListSearchString, filteredTorrents) => { return searchTorrents(filteredTorrents, torrentListSearchString); } ); const sortedTorrents = createSelector( searchedTorrents, torrentListSortBy, (searchedTorrents, torrentListSortBy) => { return sortTorrents(searchedTorrents, torrentListSortBy); } ); const torrentSelector = createSelector( selectedTorrents, sortedTorrents, (selectedTorrents, sortedTorrents) => { return { selectedTorrents, torrents: sortedTorrents }; } ); export default torrentSelector;