Files
nairobi/app/components/shared/in_favor_against_component.rb

47 lines
1.0 KiB
Ruby

class Shared::InFavorAgainstComponent < ApplicationComponent
attr_reader :votable
delegate :current_user, :votes_percentage, to: :helpers
def initialize(votable)
@votable = votable
end
private
def agree_aria_label
t("votes.agree_label", title: votable.title)
end
def disagree_aria_label
t("votes.disagree_label", title: votable.title)
end
def pressed?(value)
case current_user&.voted_as_when_voted_for(votable)
when true
value == "yes"
when false
value == "no"
else
false
end
end
def vote_in_favor_against_path(value)
if user_already_voted_with(value)
vote = Vote.find_by!(votable: votable, voter: current_user)
polymorphic_path(vote)
else
polymorphic_path(Vote.new(votable: votable), value: value)
end
end
def user_already_voted_with(value)
current_user&.voted_as_when_voted_for(votable) == parse_vote(value)
end
def parse_vote(value)
value == "yes" ? true : false
end
end