From: rinpatch Date: Sat, 1 Jun 2019 18:41:23 +0000 (+0300) Subject: Mastodon API: actually check for poll votes X-Git-Url: http://git.squeep.com/?a=commitdiff_plain;h=444406167b050524efb016cfee78636f7f6828ca;p=akkoma Mastodon API: actually check for poll votes --- diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 5bf4a6ba2..7eea0122b 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -331,7 +331,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView 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 @@ defmodule Pleroma.Web.MastodonAPI.StatusView 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 @@ defmodule Pleroma.Web.MastodonAPI.StatusView 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