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:
authorFelipe Artur <felipefac@gmail.com>2018-02-02 20:48:46 +0300
committerFelipe Artur <felipefac@gmail.com>2018-02-02 20:48:46 +0300
commit7ccbed4216fa6089f0495e9f7bac8f975af724ef (patch)
tree6b553d9392ec7afc463d2249c4b502adc8300f9f /app/controllers/projects
parent16bbcdc64f71a7d2404b5cb05dd08d36e4f6d691 (diff)
Refactor discussions controller
Diffstat (limited to 'app/controllers/projects')
-rw-r--r--app/controllers/projects/discussions_controller.rb44
1 files changed, 25 insertions, 19 deletions
diff --git a/app/controllers/projects/discussions_controller.rb b/app/controllers/projects/discussions_controller.rb
index d75d57c1f9c..fa610268dec 100644
--- a/app/controllers/projects/discussions_controller.rb
+++ b/app/controllers/projects/discussions_controller.rb
@@ -10,37 +10,43 @@ class Projects::DiscussionsController < Projects::ApplicationController
def resolve
Discussions::ResolveService.new(project, current_user, merge_request: merge_request).execute(discussion)
- if has_vue_discussions_cookie? && !params['html']
- prepare_notes_for_rendering(discussion.notes)
- # TODO: We may need to strip when cross_reference_not_visible_for
-
- render json: DiscussionSerializer.new(project: project, noteable: discussion.noteable, current_user: current_user).represent(discussion)
- else
- render json: {
- resolved_by: discussion.resolved_by.try(:name),
- discussion_headline_html: view_to_html_string('discussions/_headline', discussion: discussion)
- }
- end
+ render_discussion
end
def unresolve
discussion.unresolve!
- if has_vue_discussions_cookie? && !params['html']
- prepare_notes_for_rendering(discussion.notes)
- # TODO: We may need to strip when cross_reference_not_visible_for
- # TODO: This needs to be refactored to DRY
+ render_discussion
+ end
+
+ private
- render json: DiscussionSerializer.new(project: project, noteable: discussion.noteable, current_user: current_user).represent(discussion)
+ def render_discussion
+ if use_serializer?
+ prepare_notes_for_rendering(discussion.notes)
+ render_json_with_serializer
else
+ render_json_with_html
+ end
+ end
+
+ def use_serializer?
+ has_vue_discussions_cookie? && !params['html']
+ end
+
+ def render_json_with_serializer
+ render json:
+ DiscussionSerializer.new(project: project, noteable: discussion.noteable, current_user: current_user).
+ represent(discussion, context: self)
+ end
+
+ # Legacy method used to render discussions notes when not using Vue on views.
+ def render_json_with_html
render json: {
discussion_headline_html: view_to_html_string('discussions/_headline', discussion: discussion)
}
- end
end
- private
-
def merge_request
@merge_request ||= MergeRequestsFinder.new(current_user, project_id: @project.id).find_by!(iid: params[:merge_request_id])
end