Files
danbooru/app/components/comment_component.rb
evazion b3c1c753b3 comments: allow admins to remove comment votes (fix #4640)
Allow admins to remove comment votes by other users. This is done by
clicking the comment score to get to the comment vote list, then
clicking the Remove button on every vote.
2021-03-30 00:10:25 -05:00

47 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)
@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.moderation_reports.present?
end
end