[#2323] Fixed /accounts/relationships Closes pleroma-fe#820 See merge request pleroma/pleroma!2347debug-remote-ip
@@ -13,16 +13,18 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do | |||||
alias Pleroma.Web.MediaProxy | alias Pleroma.Web.MediaProxy | ||||
def render("index.json", %{users: users} = opts) do | def render("index.json", %{users: users} = opts) do | ||||
reading_user = opts[:for] | |||||
relationships_opt = | relationships_opt = | ||||
cond do | cond do | ||||
Map.has_key?(opts, :relationships) -> | Map.has_key?(opts, :relationships) -> | ||||
opts[:relationships] | opts[:relationships] | ||||
is_nil(opts[:for]) -> | |||||
is_nil(reading_user) -> | |||||
UserRelationship.view_relationships_option(nil, []) | UserRelationship.view_relationships_option(nil, []) | ||||
true -> | true -> | ||||
UserRelationship.view_relationships_option(opts[:for], users) | |||||
UserRelationship.view_relationships_option(reading_user, users) | |||||
end | end | ||||
opts = Map.put(opts, :relationships, relationships_opt) | opts = Map.put(opts, :relationships, relationships_opt) | ||||
@@ -143,7 +145,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do | |||||
Map.has_key?(opts, :relationships) -> | Map.has_key?(opts, :relationships) -> | ||||
opts[:relationships] | opts[:relationships] | ||||
is_nil(opts[:for]) -> | |||||
is_nil(user) -> | |||||
UserRelationship.view_relationships_option(nil, []) | UserRelationship.view_relationships_option(nil, []) | ||||
true -> | true -> | ||||
@@ -36,7 +36,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do | |||||
Map.has_key?(opts, :relationships) -> | Map.has_key?(opts, :relationships) -> | ||||
opts[:relationships] | opts[:relationships] | ||||
is_nil(opts[:for]) -> | |||||
is_nil(reading_user) -> | |||||
UserRelationship.view_relationships_option(nil, []) | UserRelationship.view_relationships_option(nil, []) | ||||
true -> | true -> | ||||
@@ -72,6 +72,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do | |||||
end | end | ||||
def render("index.json", opts) do | def render("index.json", opts) do | ||||
reading_user = opts[:for] | |||||
# To do: check AdminAPIControllerTest on the reasons behind nil activities in the list | # To do: check AdminAPIControllerTest on the reasons behind nil activities in the list | ||||
activities = Enum.filter(opts.activities, & &1) | activities = Enum.filter(opts.activities, & &1) | ||||
replied_to_activities = get_replied_to_activities(activities) | replied_to_activities = get_replied_to_activities(activities) | ||||
@@ -82,8 +84,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do | |||||
|> Enum.map(&Object.normalize(&1).data["id"]) | |> Enum.map(&Object.normalize(&1).data["id"]) | ||||
|> Activity.create_by_object_ap_id() | |> Activity.create_by_object_ap_id() | ||||
|> Activity.with_preloaded_object(:left) | |> Activity.with_preloaded_object(:left) | ||||
|> Activity.with_preloaded_bookmark(opts[:for]) | |||||
|> Activity.with_set_thread_muted_field(opts[:for]) | |||||
|> Activity.with_preloaded_bookmark(reading_user) | |||||
|> Activity.with_set_thread_muted_field(reading_user) | |||||
|> Repo.all() | |> Repo.all() | ||||
relationships_opt = | relationships_opt = | ||||
@@ -91,13 +93,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do | |||||
Map.has_key?(opts, :relationships) -> | Map.has_key?(opts, :relationships) -> | ||||
opts[:relationships] | opts[:relationships] | ||||
is_nil(opts[:for]) -> | |||||
is_nil(reading_user) -> | |||||
UserRelationship.view_relationships_option(nil, []) | UserRelationship.view_relationships_option(nil, []) | ||||
true -> | true -> | ||||
actors = Enum.map(activities ++ parent_activities, &get_user(&1.data["actor"])) | actors = Enum.map(activities ++ parent_activities, &get_user(&1.data["actor"])) | ||||
UserRelationship.view_relationships_option(opts[:for], actors) | |||||
UserRelationship.view_relationships_option(reading_user, actors) | |||||
end | end | ||||
opts = | opts = | ||||
@@ -209,6 +209,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do | |||||
relationships_opt = UserRelationship.view_relationships_option(user, [other_user]) | relationships_opt = UserRelationship.view_relationships_option(user, [other_user]) | ||||
opts = Map.put(opts, :relationships, relationships_opt) | opts = Map.put(opts, :relationships, relationships_opt) | ||||
assert expected_result == AccountView.render("relationship.json", opts) | assert expected_result == AccountView.render("relationship.json", opts) | ||||
assert [expected_result] == | |||||
AccountView.render("relationships.json", %{user: user, targets: [other_user]}) | |||||
end | end | ||||
@blank_response %{ | @blank_response %{ | ||||