Skip to content

Commit

Permalink
Merge pull request #14934 from hellcp-work/report-notices
Browse files Browse the repository at this point in the history
Show information about existing reports on the associated objects
  • Loading branch information
hellcp-work committed Sep 22, 2023
2 parents b1fde05 + cbf2312 commit ea4513e
Show file tree
Hide file tree
Showing 9 changed files with 64 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
= render(DiffSubjectComponent.new(state: diff['state'], old_filename: diff.dig('old', 'name'), new_filename: diff.dig('new', 'name')))
= render(DiffComponent.new(diff: diff.dig('diff', '_content'), range:))
.comment-bubble-content
= render ReportsNoticeComponent.new(reportable: comment, user: User.session)
= helpers.render_as_markdown(comment)

- if policy(comment).update?
Expand Down
6 changes: 6 additions & 0 deletions src/api/app/components/reports_notice_component.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.text-warning
%i.fas.fa-flag
- if by_user?
You reported this #{reportable_name}.
- else
This #{reportable_name} has #{report_amount}.
25 changes: 25 additions & 0 deletions src/api/app/components/reports_notice_component.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
class ReportsNoticeComponent < ApplicationComponent
attr_reader :reportable, :reportable_name, :user, :reports

def initialize(reportable:, user:)
super

@reportable = reportable
@reportable_name = reportable.class.name.downcase
@user = user
@reports = reportable&.reports
end

def by_user?
Report.exists?(user:, reportable:)
end

def report_amount
pluralize(reports.count, 'report')
end

def render?
Flipper.enabled?(:content_moderation, user) &&
reports&.any? { |r| Pundit.policy(user, r).show? }
end
end
1 change: 1 addition & 0 deletions src/api/app/views/webui/comment/_content.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
filename = sourcediff['filenames'][file_index.to_i]
%p
%i Inline comment for target: '#{target}', file: '#{filename}', and line: #{line_number}.
= render ReportsNoticeComponent.new(reportable: comment, user: User.session)
= render_as_markdown(comment)
- unless comment.commentable.is_a?(BsRequestAction)
= render partial: 'webui/comment/reply', locals: { comment: comment, level: 0, commentable: commentable }
Expand Down
2 changes: 2 additions & 0 deletions src/api/app/views/webui/package/_side_links.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,5 @@
= render partial: 'webui/package/side_links/checkout_package', locals: { project: project, package: package }

= render partial: 'webui/package/side_links/create_badge', locals: { project: project, package: package }

= render partial: 'webui/package/side_links/reports', locals: { package: package }
4 changes: 4 additions & 0 deletions src/api/app/views/webui/package/side_links/_reports.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- reports_component = ReportsNoticeComponent.new(reportable: package, user: User.session)
- if reports_component.render?
%li
= render reports_component
4 changes: 4 additions & 0 deletions src/api/app/views/webui/project/_side_links.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,7 @@
%li
%i.fa.fa-lock
is locked
- reports_component = ReportsNoticeComponent.new(reportable: project, user: User.session)
- if reports_component.render?
%li
= render reports_component
1 change: 1 addition & 0 deletions src/api/app/views/webui/user/_basic_info.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

.basic-info
.d-flex.flex-row-reverse
= render ReportsNoticeComponent.new(reportable: user, user: User.session)
- if policy(Report.new(reportable: user)).create?
= link_to('#', id: "js-user-#{user.id}", class: 'ps-2',
data: { 'bs-toggle': 'modal',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class ReportsNoticeComponentPreview < ViewComponent::Preview
# Preview at http://HOST:PORT/rails/view_components/reports_notice_component/user_reportable_as_admin
def user_reportable_as_admin
reportable = User.last
User.take(3).each do |user|
Report.new(reportable:, user:).save!
end
render(ReportsNoticeComponent.new(reportable:, user: User.admins.first))
end

# Preview at http://HOST:PORT/rails/view_components/reports_notice_component/user_reportable_as_reporter
def user_reportable_as_reporter
reportable = User.last
reporters = User.take(3)
reporters.each do |user|
Report.new(reportable:, user:).save!
end
render(ReportsNoticeComponent.new(reportable:, user: reporters.last))
end
end

0 comments on commit ea4513e

Please sign in to comment.