Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/projects/discussions_controller.rb')
-rw-r--r--app/controllers/projects/discussions_controller.rb23
1 files changed, 18 insertions, 5 deletions
diff --git a/app/controllers/projects/discussions_controller.rb b/app/controllers/projects/discussions_controller.rb
index 59de4fbb698..34b283b87f5 100644
--- a/app/controllers/projects/discussions_controller.rb
+++ b/app/controllers/projects/discussions_controller.rb
@@ -4,8 +4,8 @@ class Projects::DiscussionsController < Projects::ApplicationController
include NotesHelper
include RendersNotes
- before_action :check_merge_requests_available!
- before_action :merge_request
+ before_action :check_noteable_supports_resolvable_notes!
+ before_action :noteable
before_action :discussion, only: [:resolve, :unresolve]
before_action :authorize_resolve_discussion!, only: [:resolve, :unresolve]
@@ -56,13 +56,26 @@ class Projects::DiscussionsController < Projects::ApplicationController
end
# rubocop: disable CodeReuse/ActiveRecord
- def merge_request
- @merge_request ||= MergeRequestsFinder.new(current_user, project_id: @project.id).find_by!(iid: params[:merge_request_id])
+ def noteable
+ @noteable ||= noteable_finder_class.new(current_user, project_id: @project.id).find_by!(iid: params[:noteable_id])
end
# rubocop: enable CodeReuse/ActiveRecord
+ def noteable_finder_class
+ case params[:noteable_type]
+ when 'issues'
+ IssuesFinder
+ when 'merge_requests'
+ MergeRequestsFinder
+ end
+ end
+
+ def check_noteable_supports_resolvable_notes!
+ render_404 unless noteable_finder_class && noteable&.supports_resolvable_notes?
+ end
+
def discussion
- @discussion ||= @merge_request.find_discussion(params[:id]) || render_404
+ @discussion ||= @noteable.find_discussion(params[:id]) || render_404
end
def authorize_resolve_discussion!