end
# TODO: Add tests for this view
- def render("poll.json", %{object: object} = _opts) do
+ def render("poll.json", %{object: object} = opts) do
{multiple, options} =
case object.data do
%{"anyOf" => options} when is_list(options) -> {true, options}
_ -> false
end
+ voted =
+ if opts[:for] do
+ existing_votes =
+ Pleroma.Web.ActivityPub.Utils.get_existing_votes(opts[:for].ap_id, object)
+
+ existing_votes != [] or opts[:for].ap_id == object.data["actor"]
+ else
+ false
+ end
+
{options, votes_count} =
Enum.map_reduce(options, 0, fn %{"name" => name} = option, count ->
current_count = option["replies"]["totalItems"] || 0
multiple: multiple,
votes_count: votes_count,
options: options,
- # TODO: Actually check for a vote
- voted: false,
+ voted: voted,
emojis: build_emojis(object.data["emoji"])
}
else