diff options
author | Felipe Artur <fcardozo@gitlab.com> | 2018-06-21 15:22:40 +0300 |
---|---|---|
committer | Tim Zallmann <tzallmann@gitlab.com> | 2018-06-21 15:22:40 +0300 |
commit | 3e66795ef1ff1228906239763910b051d8afcc37 (patch) | |
tree | df6424d9ec008f5d1da455f8465681b371c4a11e /app/serializers/discussion_entity.rb | |
parent | 14e35ac9b19d358d84e0cfd167f74036937285b6 (diff) |
Changes tab VUE refactoring
Diffstat (limited to 'app/serializers/discussion_entity.rb')
-rw-r--r-- | app/serializers/discussion_entity.rb | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/app/serializers/discussion_entity.rb b/app/serializers/discussion_entity.rb index 718fb35e62d..63f28133a64 100644 --- a/app/serializers/discussion_entity.rb +++ b/app/serializers/discussion_entity.rb @@ -1,16 +1,31 @@ class DiscussionEntity < Grape::Entity include RequestAwareEntity + include NotesHelper expose :id, :reply_id + expose :position, if: -> (d, _) { d.diff_discussion? } + expose :line_code, if: -> (d, _) { d.diff_discussion? } expose :expanded?, as: :expanded + expose :active?, as: :active, if: -> (d, _) { d.diff_discussion? } + expose :project_id expose :notes do |discussion, opts| request.note_entity.represent(discussion.notes, opts) end + expose :discussion_path do |discussion| + discussion_path(discussion) + end + expose :individual_note?, as: :individual_note - expose :resolvable?, as: :resolvable + expose :resolvable do |discussion| + discussion.resolvable? + end + expose :resolved?, as: :resolved + expose :resolved_by_push?, as: :resolved_by_push + expose :resolved_by + expose :resolved_at expose :resolve_path, if: -> (d, _) { d.resolvable? } do |discussion| resolve_project_merge_request_discussion_path(discussion.project, discussion.noteable, discussion.id) end @@ -18,24 +33,17 @@ class DiscussionEntity < Grape::Entity new_project_issue_path(discussion.project, merge_request_to_resolve_discussions_of: discussion.noteable.iid, discussion_to_resolve: discussion.id) end - expose :diff_file, using: DiffFileEntity, if: -> (d, _) { defined? d.diff_file } + expose :diff_file, using: DiffFileEntity, if: -> (d, _) { d.diff_discussion? } expose :diff_discussion?, as: :diff_discussion - expose :truncated_diff_lines, if: -> (d, _) { (defined? d.diff_file) && d.diff_file.text? } do |discussion| - options[:context].render_to_string( - partial: "projects/diffs/line", - collection: discussion.truncated_diff_lines, - as: :line, - locals: { diff_file: discussion.diff_file, - discussion_expanded: true, - plain: true }, - layout: false, - formats: [:html] - ) + expose :truncated_diff_lines_path, if: -> (d, _) { !d.expanded? && !render_truncated_diff_lines? } do |discussion| + project_merge_request_discussion_path(discussion.project, discussion.noteable, discussion) end - expose :image_diff_html, if: -> (d, _) { defined? d.diff_file } do |discussion| + expose :truncated_diff_lines, if: -> (d, _) { d.diff_discussion? && d.on_text? && (d.expanded? || render_truncated_diff_lines?) } + + expose :image_diff_html, if: -> (d, _) { d.diff_discussion? && d.on_image? } do |discussion| diff_file = discussion.diff_file partial = diff_file.new_file? || diff_file.deleted_file? ? 'single_image_diff' : 'replaced_image_diff' options[:context].render_to_string( @@ -47,4 +55,17 @@ class DiscussionEntity < Grape::Entity formats: [:html] ) end + + expose :for_commit?, as: :for_commit + expose :commit_id + + private + + def render_truncated_diff_lines? + options[:render_truncated_diff_lines] + end + + def current_user + request.current_user + end end |