diff options
author | Lain Soykaf <lain@soykaf.club> | 2020-07-22 14:44:06 +0200 |
---|---|---|
committer | Lain Soykaf <lain@soykaf.club> | 2020-07-22 14:44:06 +0200 |
commit | 0cb9e1da746ee5bfb8147cead3944f0e13fb447f (patch) | |
tree | 902dfce3dcd2770404c3edc8103f752e9828486c /lib | |
parent | 96f023be5c3b6d41f610ceecd50320da2aacca8d (diff) | |
download | pleroma-0cb9e1da746ee5bfb8147cead3944f0e13fb447f.tar.gz pleroma-0cb9e1da746ee5bfb8147cead3944f0e13fb447f.zip |
StatusView: Handle badly formatted emoji reactions.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/mastodon_api/views/status_view.ex | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index fa9d695f3..91b41ef59 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -297,13 +297,17 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do emoji_reactions = with %{data: %{"reactions" => emoji_reactions}} <- object do - Enum.map(emoji_reactions, fn [emoji, users] -> - %{ - name: emoji, - count: length(users), - me: !!(opts[:for] && opts[:for].ap_id in users) - } + Enum.map(emoji_reactions, fn + [emoji, users] when is_list(users) -> + build_emoji_map(emoji, users, opts[:for]) + + {emoji, users} when is_list(users) -> + build_emoji_map(emoji, users, opts[:for]) + + _ -> + nil end) + |> Enum.reject(&is_nil/1) else _ -> [] end @@ -545,4 +549,12 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do defp pinned?(%Activity{id: id}, %User{pinned_activities: pinned_activities}), do: id in pinned_activities + + defp build_emoji_map(emoji, users, current_user) do + %{ + name: emoji, + count: length(users), + me: !!(current_user && current_user.ap_id in users) + } + end end |