diff options
author | Clement Ho <clemmakesapps@gmail.com> | 2018-02-28 18:40:06 +0000 |
---|---|---|
committer | Clement Ho <clemmakesapps@gmail.com> | 2018-02-28 18:40:06 +0000 |
commit | 9353c5c780c7af6d6ed3d6c501b155f82debc99c (patch) | |
tree | 55d87571798f5ff10ee1431a296f1115251f67e9 /app/controllers/projects/discussions_controller.rb | |
parent | c287c01821c4db4830dbdd5263907f08c2ed4cc4 (diff) | |
parent | e2638c3ff2714e5efd4bc54e64555fc564c84af1 (diff) | |
download | gitlab-ce-pipelines_show_refactor.tar.gz |
Merge branch 'master' into 'pipelines_show_refactor'pipelines_show_refactor
# Conflicts:
# config/webpack.config.js
Diffstat (limited to 'app/controllers/projects/discussions_controller.rb')
-rw-r--r-- | app/controllers/projects/discussions_controller.rb | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/app/controllers/projects/discussions_controller.rb b/app/controllers/projects/discussions_controller.rb index 2e6ab7903b8..ee507009e50 100644 --- a/app/controllers/projects/discussions_controller.rb +++ b/app/controllers/projects/discussions_controller.rb @@ -1,4 +1,7 @@ class Projects::DiscussionsController < Projects::ApplicationController + include NotesHelper + include RendersNotes + before_action :check_merge_requests_available! before_action :merge_request before_action :discussion @@ -7,22 +10,45 @@ class Projects::DiscussionsController < Projects::ApplicationController def resolve Discussions::ResolveService.new(project, current_user, merge_request: merge_request).execute(discussion) - render json: { - resolved_by: discussion.resolved_by.try(:name), - discussion_headline_html: view_to_html_string('discussions/_headline', discussion: discussion) - } + render_discussion end def unresolve discussion.unresolve! + render_discussion + end + + private + + def render_discussion + if serialize_notes? + # TODO - It is not needed to serialize notes when resolving + # or unresolving discussions. We should remove this behavior + # passing a parameter to DiscussionEntity to return an empty array + # for notes. + # Check issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/42853 + prepare_notes_for_rendering(discussion.notes, merge_request) + render_json_with_discussions_serializer + else + render_json_with_html + end + end + + def render_json_with_discussions_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: { + resolved_by: discussion.resolved_by.try(:name), discussion_headline_html: view_to_html_string('discussions/_headline', discussion: discussion) } end - private - def merge_request @merge_request ||= MergeRequestsFinder.new(current_user, project_id: @project.id).find_by!(iid: params[:merge_request_id]) end |