0
0
Fork 0
* Add polls

Fix #1629

* Add tests

* Fixes

* Change API for creating polls

* Use name instead of content for votes

* Remove poll validation for remote polls

* Add polls to public pages

* When updating the poll, update options just in case they were changed

* Fix public pages showing both poll and other media
This commit is contained in:
Eugen Rochko 2019-03-03 22:18:23 +01:00 committed by GitHub
parent 99dc212ae5
commit 230a012f00
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 1038 additions and 19 deletions

View file

@ -0,0 +1,38 @@
# frozen_string_literal: true
class REST::PollSerializer < ActiveModel::Serializer
attributes :id, :expires_at, :expired,
:multiple, :votes_count
has_many :dynamic_options, key: :options
attribute :voted, if: :current_user?
def id
object.id.to_s
end
def dynamic_options
if !object.expired? && object.hide_totals?
object.unloaded_options
else
object.loaded_options
end
end
def expired
object.expired?
end
def voted
object.votes.where(account: current_user.account).exists?
end
def current_user?
!current_user.nil?
end
class OptionSerializer < ActiveModel::Serializer
attributes :title, :votes_count
end
end

View file

@ -21,6 +21,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
has_many :emojis, serializer: REST::CustomEmojiSerializer
has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer
has_one :poll, serializer: REST::PollSerializer
def id
object.id.to_s