logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: fe42844bda3059ae3be8779c3a84c48244e1120a
parent: 9ef31767f23b908f276c6cbd44b0bd46373f91fe
Author: kaniini <ariadne@dereferenced.org>
Date:   Wed, 14 Aug 2019 01:03:54 +0000

Merge branch 'get-context-optimizations' into 'develop'

Preload thread mutes/bookmarks in get_context

See merge request pleroma/pleroma!1562

Diffstat:

Mlib/pleroma/web/activity_pub/activity_pub.ex9+++++++++
Mlib/pleroma/web/mastodon_api/mastodon_api_controller.ex7++-----
2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -518,6 +518,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do from(activity in Activity) |> maybe_preload_objects(opts) + |> maybe_preload_bookmarks(opts) + |> maybe_set_thread_muted_field(opts) |> restrict_blocked(opts) |> restrict_recipients(recipients, opts["user"]) |> where( @@ -531,6 +533,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do ) ) |> exclude_poll_votes(opts) + |> exclude_id(opts) |> order_by([activity], desc: activity.id) end @@ -870,6 +873,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end end + defp exclude_id(query, %{"exclude_id" => id}) when is_binary(id) do + from(activity in query, where: activity.id != ^id) + end + + defp exclude_id(query, _), do: query + defp maybe_preload_objects(query, %{"skip_preload" => true}), do: query defp maybe_preload_objects(query, _) do diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -497,12 +497,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do activities <- ActivityPub.fetch_activities_for_context(activity.data["context"], %{ "blocking_user" => user, - "user" => user + "user" => user, + "exclude_id" => activity.id }), - activities <- - activities |> Enum.filter(fn %{id: aid} -> to_string(aid) != to_string(id) end), - activities <- - activities |> Enum.filter(fn %{data: %{"type" => type}} -> type == "Create" end), grouped_activities <- Enum.group_by(activities, fn %{id: id} -> id < activity.id end) do result = %{ ancestors: