* Add ability to mark moderation reports as 'handled' or 'rejected'. * Automatically mark reports as handled when the comment or forum post is deleted. * Send a dmail to the reporter when their report is handled. * Don't show the report notice on comments or forum posts when all reports against it have been handled or rejected. * Add a fix script to mark all existing reports for deleted comments, forum posts, or dmails as handled.
48 lines
1.2 KiB
Ruby
48 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class CommentComponent < ApplicationComponent
|
|
attr_reader :comment, :context, :dtext_data, :current_user
|
|
|
|
def initialize(comment:, current_user:, context: nil, dtext_data: nil)
|
|
super
|
|
@comment = comment
|
|
@context = context
|
|
@dtext_data = dtext_data
|
|
@current_user = current_user
|
|
end
|
|
|
|
def dimmed?
|
|
comment.is_deleted? || (!comment.is_sticky? && comment.score <= current_user.comment_threshold / 2.0)
|
|
end
|
|
|
|
def thresholded?
|
|
!comment.is_deleted? && !comment.is_sticky? && comment.score <= current_user.comment_threshold
|
|
end
|
|
|
|
def redact_deleted?
|
|
comment.is_deleted? && !policy(comment).can_see_deleted?
|
|
end
|
|
|
|
def votable?
|
|
!comment.is_deleted? || current_user.is_moderator?
|
|
end
|
|
|
|
def upvoted?
|
|
return false if current_user.is_anonymous?
|
|
!!current_vote&.is_positive?
|
|
end
|
|
|
|
def downvoted?
|
|
return false if current_user.is_anonymous?
|
|
!!current_vote&.is_negative?
|
|
end
|
|
|
|
def current_vote
|
|
@current_vote ||= comment.votes.active.find { |v| v.user_id == current_user.id }
|
|
end
|
|
|
|
def reported?
|
|
policy(ModerationReport).can_see_moderation_reports? && comment.pending_moderation_reports.present?
|
|
end
|
|
end
|