136 lines
3.1 KiB
JavaScript
136 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;
|
||
|
};
|