lbry-desktop/ui/js/selectors/search.js
2017-06-05 21:21:55 -07:00

72 lines
1.6 KiB
JavaScript

import { createSelector } from 'reselect';
import { selectPageTitle, selectCurrentPage } from 'selectors/app';
export const _selectState = state => state.search || {};
export const selectSearchQuery = createSelector(
_selectState,
state => state.query
);
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 selectWunderBarAddress = createSelector(
selectCurrentPage,
selectPageTitle,
selectSearchQuery,
(page, title, query) => (page != 'search' ? title : query ? query : title)
);
export const selectWunderBarIcon = createSelector(selectCurrentPage, page => {
switch (page) {
case 'search':
return 'icon-search';
case 'settings':
return 'icon-gear';
case 'help':
return 'icon-question';
case 'report':
return 'icon-file';
case 'downloaded':
return 'icon-folder';
case 'published':
return 'icon-folder';
case 'start':
return 'icon-file';
case 'rewards':
return 'icon-bank';
case 'wallet':
case 'send':
case 'receive':
return 'icon-bank';
case 'show':
return 'icon-file';
case 'publish':
return 'icon-upload';
case 'developer':
return 'icon-file';
case 'developer':
return 'icon-code';
case 'discover':
return 'icon-home';
}
});