summaryrefslogtreecommitdiff
path: root/app/services/merge_requests/base_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/merge_requests/base_service.rb')
-rw-r--r--app/services/merge_requests/base_service.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/app/services/merge_requests/base_service.rb b/app/services/merge_requests/base_service.rb
index 7e301f311e9..abc3f99797d 100644
--- a/app/services/merge_requests/base_service.rb
+++ b/app/services/merge_requests/base_service.rb
@@ -23,6 +23,8 @@ module MergeRequests
merge_data = hook_data(merge_request, action, old_rev: old_rev, old_associations: old_associations)
merge_request.project.execute_hooks(merge_data, :merge_request_hooks)
merge_request.project.execute_services(merge_data, :merge_request_hooks)
+
+ enqueue_jira_connect_messages_for(merge_request)
end
def cleanup_environments(merge_request)
@@ -52,6 +54,14 @@ module MergeRequests
private
+ def enqueue_jira_connect_messages_for(merge_request)
+ return unless project.jira_subscription_exists?
+
+ if Atlassian::JiraIssueKeyExtractor.has_keys?(merge_request.title, merge_request.description)
+ JiraConnect::SyncMergeRequestWorker.perform_async(merge_request.id)
+ end
+ end
+
def create(merge_request)
self.params = assign_allowed_merge_params(merge_request, params)
@@ -87,6 +97,28 @@ module MergeRequests
unless merge_request.can_allow_collaboration?(current_user)
params.delete(:allow_collaboration)
end
+
+ filter_reviewer(merge_request)
+ end
+
+ def filter_reviewer(merge_request)
+ return if params[:reviewer_ids].blank?
+
+ unless can_admin_issuable?(merge_request) && merge_request.allows_reviewers?
+ params.delete(:reviewer_ids)
+
+ return
+ end
+
+ reviewer_ids = params[:reviewer_ids].select { |reviewer_id| user_can_read?(merge_request, reviewer_id) }
+
+ if params[:reviewer_ids].map(&:to_s) == [IssuableFinder::Params::NONE]
+ params[:reviewer_ids] = []
+ elsif reviewer_ids.any?
+ params[:reviewer_ids] = reviewer_ids
+ else
+ params.delete(:reviewer_ids)
+ end
end
def merge_request_metrics_service(merge_request)