# 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.moderation_reports.present? end end