summaryrefslogtreecommitdiff
path: root/app/serializers/merge_request_widget_entity.rb
diff options
context:
space:
mode:
authorOswaldo Ferreira <oswaldo@gitlab.com>2018-01-29 23:53:47 -0200
committerOswaldo Ferreira <oswaldo@gitlab.com>2018-01-29 23:53:47 -0200
commitdbfedb5adb3651d3b700186b24a5b1b69d10a0dd (patch)
treec34420dc30ecfa6479595294d59fd623406bc550 /app/serializers/merge_request_widget_entity.rb
parent1f309b69df3f71d988d4d31b08a1b683099a46e5 (diff)
downloadgitlab-ce-dbfedb5adb3651d3b700186b24a5b1b69d10a0dd.tar.gz
Check MR state before submitting queries for discussion stateosw-short-circuit-mergeable-disccusions-state
Diffstat (limited to 'app/serializers/merge_request_widget_entity.rb')
-rw-r--r--app/serializers/merge_request_widget_entity.rb13
1 files changed, 12 insertions, 1 deletions
diff --git a/app/serializers/merge_request_widget_entity.rb b/app/serializers/merge_request_widget_entity.rb
index 48cd2317f46..fbfe480503b 100644
--- a/app/serializers/merge_request_widget_entity.rb
+++ b/app/serializers/merge_request_widget_entity.rb
@@ -48,7 +48,18 @@ class MergeRequestWidgetEntity < IssuableEntity
expose :merge_ongoing?, as: :merge_ongoing
expose :work_in_progress?, as: :work_in_progress
expose :source_branch_exists?, as: :source_branch_exists
- expose :mergeable_discussions_state?, as: :mergeable_discussions_state
+
+ expose :mergeable_discussions_state?, as: :mergeable_discussions_state do |merge_request|
+ # This avoids calling MergeRequest#mergeable_discussions_state without
+ # considering the state of the MR first. If a MR isn't mergeable, we can
+ # safely short-circuit it.
+ if merge_request.mergeable_state?(skip_ci_check: true, skip_discussions_check: true)
+ merge_request.mergeable_discussions_state?
+ else
+ false
+ end
+ end
+
expose :branch_missing?, as: :branch_missing
expose :commits_count
expose :cannot_be_merged?, as: :has_conflicts