From a20d60fa1b7b4b2c1fbc1721e2e7a5e1ee9d7c3e Mon Sep 17 00:00:00 2001 From: Jacob Schatz Date: Thu, 28 Sep 2017 09:44:04 -0400 Subject: Adds dummy URL. --- .../repo/components/repo_commit_section.vue | 51 +++++++++++++++------- app/assets/javascripts/repo/helpers/repo_helper.js | 1 + .../javascripts/repo/services/repo_service.js | 7 +++ app/controllers/projects/blob_controller.rb | 7 ++- 4 files changed, 49 insertions(+), 17 deletions(-) diff --git a/app/assets/javascripts/repo/components/repo_commit_section.vue b/app/assets/javascripts/repo/components/repo_commit_section.vue index 1282828b504..09546aac79b 100644 --- a/app/assets/javascripts/repo/components/repo_commit_section.vue +++ b/app/assets/javascripts/repo/components/repo_commit_section.vue @@ -28,23 +28,42 @@ export default { }, methods: { + checkForReject() { + let okToCommit = true; + return Service.checkForReject( + decodeURIComponent(this.changedFiles[0].dummy_url) + .replace('{{branch}}', this.targetBranch) + ) + .then((data) => { + if(data.data.last_commit.id !== this.changedFiles[0].last_commit.id) { + okToCommit = false; + } + }) + .catch(() => { + new Flash('Cannot check for reject at this time.') + }); + }, + makeCommit() { - // see https://docs.gitlab.com/ce/api/commits.html#create-a-commit-with-multiple-files-and-actions - const commitMessage = this.commitMessage; - const actions = this.changedFiles.map(f => ({ - action: 'update', - file_path: f.path, - content: f.newContent, - })); - const payload = { - branch: Store.targetBranch, - commit_message: commitMessage, - actions, - }; - Store.submitCommitsLoading = true; - Service.commitFiles(payload) - .then(this.resetCommitState) - .catch(() => Flash('An error occured while committing your changes')); + this.checkForReject() + .then(() => { + // see https://docs.gitlab.com/ce/api/commits.html#create-a-commit-with-multiple-files-and-actions + const commitMessage = this.commitMessage; + const actions = this.changedFiles.map(f => ({ + action: 'update', + file_path: f.path, + content: f.newContent, + })); + const payload = { + branch: Store.targetBranch, + commit_message: commitMessage, + actions, + }; + Store.submitCommitsLoading = true; + Service.commitFiles(payload) + .then(this.resetCommitState) + .catch(() => Flash('An error occured while committing your changes')); + }); }, resetCommitState() { diff --git a/app/assets/javascripts/repo/helpers/repo_helper.js b/app/assets/javascripts/repo/helpers/repo_helper.js index 2bd8d7eea65..16b8cedf81b 100644 --- a/app/assets/javascripts/repo/helpers/repo_helper.js +++ b/app/assets/javascripts/repo/helpers/repo_helper.js @@ -16,6 +16,7 @@ const RepoHelper = { name: '', plain: '', size: 0, + dummy_url: '', url: '', raw: false, newContent: '', diff --git a/app/assets/javascripts/repo/services/repo_service.js b/app/assets/javascripts/repo/services/repo_service.js index af83497fa39..913c4e5fcca 100644 --- a/app/assets/javascripts/repo/services/repo_service.js +++ b/app/assets/javascripts/repo/services/repo_service.js @@ -65,6 +65,13 @@ const RepoService = { return urlArray.join('/'); }, + checkForReject(url) { + const params = this.buildParams(url); + return axios.get(url, { + params + }); + }, + commitFiles(payload) { return Api.commitMultiple(Store.projectId, payload) .then(this.commitFlash); diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb index 2b8f3977e6e..43c73f0d55b 100644 --- a/app/controllers/projects/blob_controller.rb +++ b/app/controllers/projects/blob_controller.rb @@ -201,7 +201,10 @@ class Projects::BlobController < Projects::ApplicationController path_segments = @path.split('/') path_segments.pop tree_path = path_segments.join('/') - + last_commit = @repository.last_commit_for_path(@commit.id, @blob.path) + puts '---------*_*__*_*_*_*_*_*_*_*_*_*_*_*_*_*' + puts params[:only] + puts '---------*_*__*_*_*_*_*_*_*_*_*_*_*_*_*_*' render json: json.merge( path: blob.path, name: blob.name, @@ -209,6 +212,8 @@ class Projects::BlobController < Projects::ApplicationController size: blob.raw_size, mime_type: blob.mime_type, binary: blob.raw_binary?, + last_commit: last_commit, + dummy_url: project_blob_path(@project, File.join('{{branch}}', blob.path)), simple_viewer: blob.simple_viewer&.class&.partial_name, rich_viewer: blob.rich_viewer&.class&.partial_name, show_viewer_switcher: !!blob.show_viewer_switcher?, -- cgit v1.2.1