Ensured no auxiliary computations (actors list preparation etc.) related to relationships preloading if no user is present (for statuses / accounts / relationships rendering).
This commit is contained in:
parent
112101ca52
commit
6b793d3f83
3 changed files with 47 additions and 26 deletions
|
@ -14,10 +14,15 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
|
|||
|
||||
def render("index.json", %{users: users} = opts) do
|
||||
relationships_opt =
|
||||
if Map.has_key?(opts, :relationships) do
|
||||
opts[:relationships]
|
||||
else
|
||||
UserRelationship.view_relationships_option(opts[:for], users)
|
||||
cond do
|
||||
Map.has_key?(opts, :relationships) ->
|
||||
opts[:relationships]
|
||||
|
||||
is_nil(opts[:for]) ->
|
||||
UserRelationship.view_relationships_option(nil, [])
|
||||
|
||||
true ->
|
||||
UserRelationship.view_relationships_option(opts[:for], users)
|
||||
end
|
||||
|
||||
opts = Map.put(opts, :relationships, relationships_opt)
|
||||
|
@ -134,10 +139,15 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
|
|||
|
||||
def render("relationships.json", %{user: user, targets: targets} = opts) do
|
||||
relationships_opt =
|
||||
if Map.has_key?(opts, :relationships) do
|
||||
opts[:relationships]
|
||||
else
|
||||
UserRelationship.view_relationships_option(user, targets)
|
||||
cond do
|
||||
Map.has_key?(opts, :relationships) ->
|
||||
opts[:relationships]
|
||||
|
||||
is_nil(opts[:for]) ->
|
||||
UserRelationship.view_relationships_option(nil, [])
|
||||
|
||||
true ->
|
||||
UserRelationship.view_relationships_option(user, targets)
|
||||
end
|
||||
|
||||
render_opts = %{as: :target, user: user, relationships: relationships_opt}
|
||||
|
|
|
@ -32,21 +32,26 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do
|
|||
|> Pleroma.Repo.all()
|
||||
|
||||
relationships_opt =
|
||||
if Map.has_key?(opts, :relationships) do
|
||||
opts[:relationships]
|
||||
else
|
||||
move_activities_targets =
|
||||
activities
|
||||
|> Enum.filter(&(Activity.mastodon_notification_type(&1) == "move"))
|
||||
|> Enum.map(&User.get_cached_by_ap_id(&1.data["target"]))
|
||||
cond do
|
||||
Map.has_key?(opts, :relationships) ->
|
||||
opts[:relationships]
|
||||
|
||||
actors =
|
||||
activities
|
||||
|> Enum.map(fn a -> User.get_cached_by_ap_id(a.data["actor"]) end)
|
||||
|> Enum.filter(& &1)
|
||||
|> Kernel.++(move_activities_targets)
|
||||
is_nil(opts[:for]) ->
|
||||
UserRelationship.view_relationships_option(nil, [])
|
||||
|
||||
UserRelationship.view_relationships_option(reading_user, actors)
|
||||
true ->
|
||||
move_activities_targets =
|
||||
activities
|
||||
|> Enum.filter(&(Activity.mastodon_notification_type(&1) == "move"))
|
||||
|> Enum.map(&User.get_cached_by_ap_id(&1.data["target"]))
|
||||
|
||||
actors =
|
||||
activities
|
||||
|> Enum.map(fn a -> User.get_cached_by_ap_id(a.data["actor"]) end)
|
||||
|> Enum.filter(& &1)
|
||||
|> Kernel.++(move_activities_targets)
|
||||
|
||||
UserRelationship.view_relationships_option(reading_user, actors)
|
||||
end
|
||||
|
||||
opts = %{
|
||||
|
|
|
@ -87,11 +87,17 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
|
|||
|> Repo.all()
|
||||
|
||||
relationships_opt =
|
||||
if Map.has_key?(opts, :relationships) do
|
||||
opts[:relationships]
|
||||
else
|
||||
actors = Enum.map(activities ++ parent_activities, &get_user(&1.data["actor"]))
|
||||
UserRelationship.view_relationships_option(opts[:for], actors)
|
||||
cond do
|
||||
Map.has_key?(opts, :relationships) ->
|
||||
opts[:relationships]
|
||||
|
||||
is_nil(opts[:for]) ->
|
||||
UserRelationship.view_relationships_option(nil, [])
|
||||
|
||||
true ->
|
||||
actors = Enum.map(activities ++ parent_activities, &get_user(&1.data["actor"]))
|
||||
|
||||
UserRelationship.view_relationships_option(opts[:for], actors)
|
||||
end
|
||||
|
||||
opts =
|
||||
|
|
Loading…
Reference in a new issue