debian-mirror-gitlab/app/assets/javascripts/header_search/store/getters.js
2021-11-11 11:23:49 +05:30

135 lines
3.1 KiB
JavaScript

import { objectToQuery } from '~/lib/utils/url_utility';
import {
MSG_ISSUES_ASSIGNED_TO_ME,
MSG_ISSUES_IVE_CREATED,
MSG_MR_ASSIGNED_TO_ME,
MSG_MR_IM_REVIEWER,
MSG_MR_IVE_CREATED,
MSG_IN_PROJECT,
MSG_IN_GROUP,
MSG_IN_ALL_GITLAB,
} from '../constants';
export const searchQuery = (state) => {
const query = {
search: state.search,
nav_source: 'navbar',
project_id: state.searchContext.project?.id,
group_id: state.searchContext.group?.id,
scope: state.searchContext.scope,
};
return `${state.searchPath}?${objectToQuery(query)}`;
};
export const scopedIssuesPath = (state) => {
return (
state.searchContext.project_metadata?.issues_path ||
state.searchContext.group_metadata?.issues_path ||
state.issuesPath
);
};
export const scopedMRPath = (state) => {
return (
state.searchContext.project_metadata?.mr_path ||
state.searchContext.group_metadata?.mr_path ||
state.mrPath
);
};
export const defaultSearchOptions = (state, getters) => {
const userName = gon.current_username;
return [
{
title: MSG_ISSUES_ASSIGNED_TO_ME,
url: `${getters.scopedIssuesPath}/?assignee_username=${userName}`,
},
{
title: MSG_ISSUES_IVE_CREATED,
url: `${getters.scopedIssuesPath}/?author_username=${userName}`,
},
{
title: MSG_MR_ASSIGNED_TO_ME,
url: `${getters.scopedMRPath}/?assignee_username=${userName}`,
},
{
title: MSG_MR_IM_REVIEWER,
url: `${getters.scopedMRPath}/?reviewer_username=${userName}`,
},
{
title: MSG_MR_IVE_CREATED,
url: `${getters.scopedMRPath}/?author_username=${userName}`,
},
];
};
export const projectUrl = (state) => {
if (!state.searchContext.project || !state.searchContext.group) {
return null;
}
const query = {
search: state.search,
nav_source: 'navbar',
project_id: state.searchContext.project.id,
group_id: state.searchContext.group.id,
scope: state.searchContext.scope,
};
return `${state.searchPath}?${objectToQuery(query)}`;
};
export const groupUrl = (state) => {
if (!state.searchContext.group) {
return null;
}
const query = {
search: state.search,
nav_source: 'navbar',
group_id: state.searchContext.group.id,
scope: state.searchContext.scope,
};
return `${state.searchPath}?${objectToQuery(query)}`;
};
export const allUrl = (state) => {
const query = {
search: state.search,
nav_source: 'navbar',
scope: state.searchContext.scope,
};
return `${state.searchPath}?${objectToQuery(query)}`;
};
export const scopedSearchOptions = (state, getters) => {
const options = [];
if (state.searchContext.project) {
options.push({
scope: state.searchContext.project.name,
description: MSG_IN_PROJECT,
url: getters.projectUrl,
});
}
if (state.searchContext.group) {
options.push({
scope: state.searchContext.group.name,
description: MSG_IN_GROUP,
url: getters.groupUrl,
});
}
options.push({
description: MSG_IN_ALL_GITLAB,
url: getters.allUrl,
});
return options;
};