Mastodon API: actually check for poll votes

This commit is contained in:
rinpatch 2019-06-01 21:41:23 +03:00
parent 65db5e9f52
commit 444406167b

View file

@ -331,7 +331,7 @@ def render("attachment.json", %{attachment: attachment}) do
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}
@ -352,6 +352,16 @@ def render("poll.json", %{object: object} = _opts) do
_ -> 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
@ -371,8 +381,7 @@ def render("poll.json", %{object: object} = _opts) do
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