From 83306d249e0762d21b9ca128b9ebb57a0bef6f8b Mon Sep 17 00:00:00 2001 From: Brett Walker Date: Thu, 10 Jan 2019 15:22:28 -0600 Subject: Pass tasklist lock version receive data on when there is a conflict --- app/assets/javascripts/issue_show/components/app.vue | 1 + app/assets/javascripts/issue_show/components/description.vue | 10 ++++++++++ app/assets/javascripts/task_list.js | 4 +++- app/controllers/concerns/issuable_actions.rb | 5 ++++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/issue_show/components/app.vue b/app/assets/javascripts/issue_show/components/app.vue index d65b44ca6f3..3e71c40e896 100644 --- a/app/assets/javascripts/issue_show/components/app.vue +++ b/app/assets/javascripts/issue_show/components/app.vue @@ -326,6 +326,7 @@ export default { :task-status="state.taskStatus" :issuable-type="issuableType" :update-url="updateEndpoint" + :lock-version="state.lock_version" /> {}); - this.onError = function showFlash(e) { + this.onError = options.onError || function showFlash(e) { let errorMessages = ''; if (e.response.data && typeof e.response.data === 'object') { @@ -43,6 +44,7 @@ export default class TaskList { const patchData = {}; patchData[this.dataType] = { [this.fieldName]: $target.val(), + ['lock_version']: this.lockVersion, }; return axios diff --git a/app/controllers/concerns/issuable_actions.rb b/app/controllers/concerns/issuable_actions.rb index 8ef3b6502df..f0b4198b2d9 100644 --- a/app/controllers/concerns/issuable_actions.rb +++ b/app/controllers/concerns/issuable_actions.rb @@ -162,10 +162,13 @@ module IssuableActions end format.json do + # We want to pass back the latest valid data, so reload the model + @issuable.reload render json: { errors: [ "Someone edited this #{issuable.human_class_name} at the same time you did. Please refresh your browser and make sure your changes will not unintentionally remove theirs." - ] + ], + data: serializer.represent(@issuable) }, status: :conflict end end -- cgit v1.2.1