diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-17 00:06:10 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-17 00:06:10 +0300 |
commit | 00bfd2d81d2539e16829585f203169bdd0274bec (patch) | |
tree | 5d201485a5cda4505131396ac0c8155ae812ba8f /app/assets/javascripts/ide/stores | |
parent | 409c3cb076e500968ec4c283cb388b56f3e7c9e6 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/ide/stores')
-rw-r--r-- | app/assets/javascripts/ide/stores/actions/file.js | 22 | ||||
-rw-r--r-- | app/assets/javascripts/ide/stores/actions/merge_request.js | 16 | ||||
-rw-r--r-- | app/assets/javascripts/ide/stores/actions/tree.js | 7 | ||||
-rw-r--r-- | app/assets/javascripts/ide/stores/getters.js | 12 | ||||
-rw-r--r-- | app/assets/javascripts/ide/stores/utils.js | 5 |
5 files changed, 40 insertions, 22 deletions
diff --git a/app/assets/javascripts/ide/stores/actions/file.js b/app/assets/javascripts/ide/stores/actions/file.js index 0393f3859a9..9af0b50d1a5 100644 --- a/app/assets/javascripts/ide/stores/actions/file.js +++ b/app/assets/javascripts/ide/stores/actions/file.js @@ -1,11 +1,10 @@ import { joinPaths } from '~/lib/utils/url_utility'; -import { normalizeHeaders } from '~/lib/utils/common_utils'; import { __ } from '~/locale'; import eventHub from '../../eventhub'; import service from '../../services'; import * as types from '../mutation_types'; import router from '../../ide_router'; -import { setPageTitle, replaceFileUrl, addFinalNewlineIfNeeded } from '../utils'; +import { escapeFileUrl, addFinalNewlineIfNeeded, setPageTitleForFile } from '../utils'; import { viewerTypes, stageKeys } from '../../constants'; export const closeFile = ({ commit, state, dispatch }, file) => { @@ -58,7 +57,7 @@ export const setFileActive = ({ commit, state, getters, dispatch }, path) => { }; export const getFileData = ( - { state, commit, dispatch }, + { state, commit, dispatch, getters }, { path, makeFileActive = true, openFile = makeFileActive }, ) => { const file = state.entries[path]; @@ -67,15 +66,18 @@ export const getFileData = ( commit(types.TOGGLE_LOADING, { entry: file }); - const url = file.prevPath ? replaceFileUrl(file.url, file.path, file.prevPath) : file.url; + const url = joinPaths( + gon.relative_url_root || '/', + state.currentProjectId, + file.type, + getters.lastCommit && getters.lastCommit.id, + escapeFileUrl(file.prevPath || file.path), + ); return service - .getFileData(joinPaths(gon.relative_url_root || '', url.replace('/-/', '/'))) - .then(({ data, headers }) => { - const normalizedHeaders = normalizeHeaders(headers); - let title = normalizedHeaders['PAGE-TITLE']; - title = file.prevPath ? title.replace(file.prevPath, file.path) : title; - setPageTitle(decodeURI(title)); + .getFileData(url) + .then(({ data }) => { + setPageTitleForFile(state, file); if (data) commit(types.SET_FILE_DATA, { data, file }); if (openFile) commit(types.TOGGLE_FILE_OPEN, path); diff --git a/app/assets/javascripts/ide/stores/actions/merge_request.js b/app/assets/javascripts/ide/stores/actions/merge_request.js index 1273e375859..6790c0fbdaa 100644 --- a/app/assets/javascripts/ide/stores/actions/merge_request.js +++ b/app/assets/javascripts/ide/stores/actions/merge_request.js @@ -152,15 +152,17 @@ export const openMergeRequest = ( .then(mr => { dispatch('setCurrentBranchId', mr.source_branch); - dispatch('getBranchData', { + // getFiles needs to be called after getting the branch data + // since files are fetched using the last commit sha of the branch + return dispatch('getBranchData', { projectId, branchId: mr.source_branch, - }); - - return dispatch('getFiles', { - projectId, - branchId: mr.source_branch, - }); + }).then(() => + dispatch('getFiles', { + projectId, + branchId: mr.source_branch, + }), + ); }) .then(() => dispatch('getMergeRequestVersions', { diff --git a/app/assets/javascripts/ide/stores/actions/tree.js b/app/assets/javascripts/ide/stores/actions/tree.js index 75511574d3e..72cd099c5a5 100644 --- a/app/assets/javascripts/ide/stores/actions/tree.js +++ b/app/assets/javascripts/ide/stores/actions/tree.js @@ -46,7 +46,7 @@ export const setDirectoryData = ({ state, commit }, { projectId, branchId, treeL }); }; -export const getFiles = ({ state, commit, dispatch }, { projectId, branchId } = {}) => +export const getFiles = ({ state, commit, dispatch, getters }, { projectId, branchId } = {}) => new Promise((resolve, reject) => { if ( !state.trees[`${projectId}/${branchId}`] || @@ -54,10 +54,11 @@ export const getFiles = ({ state, commit, dispatch }, { projectId, branchId } = state.trees[`${projectId}/${branchId}`].tree.length === 0) ) { const selectedProject = state.projects[projectId]; - commit(types.CREATE_TREE, { treePath: `${projectId}/${branchId}` }); + const selectedBranch = getters.findBranch(projectId, branchId); + commit(types.CREATE_TREE, { treePath: `${projectId}/${branchId}` }); service - .getFiles(selectedProject.web_url, branchId) + .getFiles(selectedProject.web_url, selectedBranch.commit.id) .then(({ data }) => { const { entries, treeList } = decorateFiles({ data, diff --git a/app/assets/javascripts/ide/stores/getters.js b/app/assets/javascripts/ide/stores/getters.js index 85fd45358be..a176fd0aca8 100644 --- a/app/assets/javascripts/ide/stores/getters.js +++ b/app/assets/javascripts/ide/stores/getters.js @@ -34,7 +34,9 @@ export const currentMergeRequest = state => { return null; }; -export const currentProject = state => state.projects[state.currentProjectId]; +export const findProject = state => projectId => state.projects[projectId]; + +export const currentProject = (state, getters) => getters.findProject(state.currentProjectId); export const emptyRepo = state => state.projects[state.currentProjectId] && state.projects[state.currentProjectId].empty_repo; @@ -94,8 +96,14 @@ export const lastCommit = (state, getters) => { return branch ? branch.commit : null; }; +export const findBranch = (state, getters) => (projectId, branchId) => { + const project = getters.findProject(projectId); + + return project && project.branches[branchId]; +}; + export const currentBranch = (state, getters) => - getters.currentProject && getters.currentProject.branches[state.currentBranchId]; + getters.findBranch(state.currentProjectId, state.currentBranchId); export const branchName = (_state, getters) => getters.currentBranch && getters.currentBranch.name; diff --git a/app/assets/javascripts/ide/stores/utils.js b/app/assets/javascripts/ide/stores/utils.js index 3ccb3722e6f..be7ee80656f 100644 --- a/app/assets/javascripts/ide/stores/utils.js +++ b/app/assets/javascripts/ide/stores/utils.js @@ -113,6 +113,11 @@ export const setPageTitle = title => { document.title = title; }; +export const setPageTitleForFile = (state, file) => { + const title = [file.path, state.currentBranchId, state.currentProjectId, 'GitLab'].join(' ยท '); + setPageTitle(title); +}; + export const commitActionForFile = file => { if (file.prevPath) { return commitActionTypes.move; |