forked from AkkomaGang/akkoma
Mastodon API: actually check for poll votes
This commit is contained in:
parent
65db5e9f52
commit
444406167b
1 changed files with 12 additions and 3 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue