summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2020-03-26 21:54:01 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2020-03-26 21:54:01 +0300
commit6b793d3f8336fcba5cac596f9e76d0274633f98d (patch)
treebaed803b51c550fb92893ef835ea3073529cd041
parent112101ca52a98b97749a56f2476a0f941a4aabdf (diff)
Ensured no auxiliary computations (actors list preparation etc.) related to relationships preloading if no user is present (for statuses / accounts / relationships rendering).
-rw-r--r--lib/pleroma/web/mastodon_api/views/account_view.ex26
-rw-r--r--lib/pleroma/web/mastodon_api/views/notification_view.ex35
-rw-r--r--lib/pleroma/web/mastodon_api/views/status_view.ex16
3 files changed, 49 insertions, 28 deletions
diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex
index 2cdfac7af..0efcabc01 100644
--- a/lib/pleroma/web/mastodon_api/views/account_view.ex
+++ b/lib/pleroma/web/mastodon_api/views/account_view.ex
@@ -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}
diff --git a/lib/pleroma/web/mastodon_api/views/notification_view.ex b/lib/pleroma/web/mastodon_api/views/notification_view.ex
index db434271c..a809080fd 100644
--- a/lib/pleroma/web/mastodon_api/views/notification_view.ex
+++ b/lib/pleroma/web/mastodon_api/views/notification_view.ex
@@ -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"]))
-
- 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)
+ cond do
+ Map.has_key?(opts, :relationships) ->
+ opts[:relationships]
+
+ is_nil(opts[:for]) ->
+ UserRelationship.view_relationships_option(nil, [])
+
+ 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 = %{
diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex
index 7b1cb7bf8..d36b9ee5c 100644
--- a/lib/pleroma/web/mastodon_api/views/status_view.ex
+++ b/lib/pleroma/web/mastodon_api/views/status_view.ex
@@ -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 =