From 01175ef4988e98aa38851e77703ffc60a3756fdd Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Fri, 13 Aug 2021 10:25:42 -0500 Subject: Streamer: fix crash in MastodonAPI.StatusView Backport of: https://git.pleroma.social/pleroma/pleroma/-/merge_requests/3508 --- CHANGELOG.md | 1 + lib/pleroma/web/mastodon_api/views/status_view.ex | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 369a8bbdd..f06bbfdf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Subscription(Bell) Notifications: Don't create from Pipeline Ingested replies - AdminAPI: Fix rendering reports containing a `nil` object - Mastodon API: Activity Search fallbacks on status fetching after a DB Timeout/Error +- Mastodon API: Fix crash in Streamer related to reblogging ## 2.4.0 - 2021-08-08 diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index da44e0a74..463f34198 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -65,11 +65,19 @@ defp get_context_id(%{data: %{"context" => context}}) when is_binary(context), defp get_context_id(_), do: nil - defp reblogged?(activity, user) do - object = Object.normalize(activity, fetch: false) || %{} - present?(user && user.ap_id in (object.data["announcements"] || [])) + # Check if the user reblogged this status + defp reblogged?(activity, %User{ap_id: ap_id}) do + with %Object{data: %{"announcements" => announcements}} when is_list(announcements) <- + Object.normalize(activity, fetch: false) do + ap_id in announcements + else + _ -> false + end end + # False if the user is logged out + defp reblogged?(_activity, _user), do: false + def render("index.json", opts) do reading_user = opts[:for] -- cgit v1.2.3