39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
import { findKey, has } from 'lodash';
|
|
import { languageFilterData } from '~/search/sidebar/components/language_filter/data';
|
|
import { formatSearchResultCount, addCountOverLimit } from '~/search/store/utils';
|
|
|
|
import { GROUPS_LOCAL_STORAGE_KEY, PROJECTS_LOCAL_STORAGE_KEY, ICON_MAP } from './constants';
|
|
|
|
export const frequentGroups = (state) => {
|
|
return state.frequentItems[GROUPS_LOCAL_STORAGE_KEY];
|
|
};
|
|
|
|
export const frequentProjects = (state) => {
|
|
return state.frequentItems[PROJECTS_LOCAL_STORAGE_KEY];
|
|
};
|
|
|
|
export const languageAggregationBuckets = (state) => {
|
|
return (
|
|
state.aggregations.data.find(
|
|
(aggregation) => aggregation.name === languageFilterData.filterParam,
|
|
)?.buckets || []
|
|
);
|
|
};
|
|
|
|
export const currentScope = (state) => findKey(state.navigation, { active: true });
|
|
|
|
export const queryLanguageFilters = (state) => state.query[languageFilterData.filterParam] || [];
|
|
|
|
export const currentUrlQueryHasLanguageFilters = (state) =>
|
|
has(state.urlQuery, languageFilterData.filterParam) &&
|
|
state.urlQuery[languageFilterData.filterParam]?.length > 0;
|
|
|
|
export const navigationItems = (state) =>
|
|
Object.values(state.navigation).map((item) => ({
|
|
title: item.label,
|
|
icon: ICON_MAP[item.scope] || '',
|
|
link: item.link,
|
|
is_active: Boolean(item?.active),
|
|
pill_count: `${formatSearchResultCount(item?.count)}${addCountOverLimit(item?.count)}` || '',
|
|
items: [],
|
|
}));
|