lbry-desktop/ui/js/selectors/search.js
2017-05-07 19:50:32 +07:00

50 lines
1.1 KiB
JavaScript

import { createSelector } from 'reselect'
import {
selectCurrentParams,
selectDaemonReady,
selectSearchQuery,
} from 'selectors/app'
export const _selectState = state => state.search || {}
export const selectIsSearching = createSelector(
_selectState,
(state) => !!state.searching
)
export const selectSearchResults = createSelector(
_selectState,
(state) => state.results || {}
)
export const selectSearchResultsByQuery = createSelector(
selectSearchResults,
(results) => results.byQuery || {}
)
export const selectCurrentSearchResults = createSelector(
selectSearchQuery,
selectSearchResultsByQuery,
(query, byQuery) => byQuery[query] || []
)
export const selectSearchActivated = createSelector(
_selectState,
(state) => !!state.activated
)
export const shouldSearch = createSelector(
selectDaemonReady,
selectSearchQuery,
selectIsSearching,
selectSearchResultsByQuery,
(daemonReady, query, isSearching, resultsByQuery) => {
if (!daemonReady) return false
if (!query) return false
if (isSearching) return false
if (Object.keys(resultsByQuery).indexOf(query) != -1) return false
return true
}
)