summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/ide/stores/actions
diff options
context:
space:
mode:
authorDenys Mishunov <dmishunov@gitlab.com>2019-03-01 17:33:18 +0100
committerDenys Mishunov <dmishunov@gitlab.com>2019-03-04 18:10:55 +0100
commita1b0b3e4ebb61e952b6e60e7be05bd96286bc298 (patch)
treed6dce2abed1ad4cccbcfe7a6ddce1fbaaf05cdce /app/assets/javascripts/ide/stores/actions
parent615c14b28990489d99371b7ffdb57fe54d463e64 (diff)
downloadgitlab-ce-a1b0b3e4ebb61e952b6e60e7be05bd96286bc298.tar.gz
Extended Web IDE API to get MRs for a certain branch in a project
New `Api.projectMergeRequests` allows: - to query for all MRs on a project without specifying `mergeRequestId` - to filter the returned MRs using parameters from https://bit.ly/2H7We4V The new API request is used for fetching information about MRs associated with a particular branch in Web IDE to have IdeSidebar behave consistently in both scenarios: - getting to a branch from and MR (where we already have info about relevant MR), or - getting to a branch somehow differently directly For cases where there are several merge requests that the current branch is associated with, mark the most recent one as 'current' Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/49663
Diffstat (limited to 'app/assets/javascripts/ide/stores/actions')
-rw-r--r--app/assets/javascripts/ide/stores/actions/merge_request.js32
-rw-r--r--app/assets/javascripts/ide/stores/actions/project.js29
2 files changed, 50 insertions, 11 deletions
diff --git a/app/assets/javascripts/ide/stores/actions/merge_request.js b/app/assets/javascripts/ide/stores/actions/merge_request.js
index 18c24369996..362ced248a1 100644
--- a/app/assets/javascripts/ide/stores/actions/merge_request.js
+++ b/app/assets/javascripts/ide/stores/actions/merge_request.js
@@ -4,6 +4,38 @@ import service from '../../services';
import * as types from '../mutation_types';
import { activityBarViews } from '../../constants';
+export const getMergeRequestsForBranch = ({ commit }, { projectId, branchId } = {}) =>
+ service
+ .getProjectMergeRequests(`${projectId}`, {
+ source_branch: branchId,
+ order_by: 'created_at',
+ per_page: 1,
+ })
+ .then(({ data }) => {
+ if (data.length > 0) {
+ const currentMR = data[0];
+
+ commit(types.SET_MERGE_REQUEST, {
+ projectPath: projectId,
+ mergeRequestId: currentMR.iid,
+ mergeRequest: currentMR,
+ });
+
+ commit(types.SET_CURRENT_MERGE_REQUEST, `${currentMR.iid}`);
+ }
+ })
+ .catch(e => {
+ flash(
+ __(`Error fetching merge requests for ${branchId}`),
+ 'alert',
+ document,
+ null,
+ false,
+ true,
+ );
+ throw e;
+ });
+
export const getMergeRequestData = (
{ commit, dispatch, state },
{ projectId, mergeRequestId, targetProjectId = null, force = false } = {},
diff --git a/app/assets/javascripts/ide/stores/actions/project.js b/app/assets/javascripts/ide/stores/actions/project.js
index b65f631c99c..06ed5c0b572 100644
--- a/app/assets/javascripts/ide/stores/actions/project.js
+++ b/app/assets/javascripts/ide/stores/actions/project.js
@@ -136,17 +136,24 @@ export const openBranch = ({ dispatch, state }, { projectId, branchId, basePath
return dispatch('getFiles', {
projectId,
branchId,
- }).then(() => {
- if (basePath) {
- const path = basePath.slice(-1) === '/' ? basePath.slice(0, -1) : basePath;
- const treeEntryKey = Object.keys(state.entries).find(
- key => key === path && !state.entries[key].pending,
- );
- const treeEntry = state.entries[treeEntryKey];
+ })
+ .then(() => {
+ if (basePath) {
+ const path = basePath.slice(-1) === '/' ? basePath.slice(0, -1) : basePath;
+ const treeEntryKey = Object.keys(state.entries).find(
+ key => key === path && !state.entries[key].pending,
+ );
+ const treeEntry = state.entries[treeEntryKey];
- if (treeEntry) {
- dispatch('handleTreeEntryAction', treeEntry);
+ if (treeEntry) {
+ dispatch('handleTreeEntryAction', treeEntry);
+ }
}
- }
- });
+ })
+ .then(() => {
+ dispatch('getMergeRequestsForBranch', {
+ projectId,
+ branchId,
+ });
+ });
};