Files
danbooru/app/components/post_votes_component.rb
evazion ffdd5e6128 posts: make post votes work the same way as comment votes.
Change post votes to work the same way as comment votes:

* Make the upvote arrow blue if you've upvoted the post, or grey if you
  haven't. Likewise for the downvote arrow.
* Make it so you can click the upvote or downvote arrows to undo the vote.
* Don't show any notices when you vote on a post.

Also fix it so that votes work the same way on the posts page, the
comments page, and in the modqueue. Before it wasn't possible to undo
votes on the comments page or in the modqueue.
2021-01-29 02:21:08 -06:00

28 lines
556 B
Ruby

# frozen_string_literal: true
# This component represents the post score and upvote/downvote buttons ("🠉 5 🠋")
class PostVotesComponent < ApplicationComponent
attr_reader :post, :current_user
def initialize(post:, current_user:)
@post = post
@current_user = current_user
end
def can_vote?
policy(PostVote).create?
end
def current_vote
post.votes.find_by(user: current_user)
end
def upvoted?
can_vote? && current_vote&.is_positive?
end
def downvoted?
can_vote? && current_vote&.is_negative?
end
end