[#2456] Removed support for embedded relationships in account view.
authorIvan Tashkinov <ivantashkinov@gmail.com>
Sun, 10 May 2020 06:16:48 +0000 (09:16 +0300)
committerIvan Tashkinov <ivantashkinov@gmail.com>
Sun, 10 May 2020 06:16:48 +0000 (09:16 +0300)
lib/pleroma/web/admin_api/admin_api_controller.ex
lib/pleroma/web/admin_api/views/account_view.ex
lib/pleroma/web/chat_channel.ex
lib/pleroma/web/mastodon_api/controllers/search_controller.ex
lib/pleroma/web/mastodon_api/views/account_view.ex
lib/pleroma/web/mastodon_api/views/notification_view.ex
lib/pleroma/web/mastodon_api/views/status_view.ex
lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex
test/web/mastodon_api/views/account_view_test.exs
test/web/mastodon_api/views/notification_view_test.exs

index d2c5a6b9c0d885b65d7fcc32e42e60c3ce8eb956..987b3bcbaf8664c43435da23d0b1bd1551e617c5 100644 (file)
@@ -22,6 +22,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
   alias Pleroma.Web.ActivityPub.Pipeline
   alias Pleroma.Web.ActivityPub.Relay
   alias Pleroma.Web.ActivityPub.Utils
+  alias Pleroma.Web.AdminAPI
   alias Pleroma.Web.AdminAPI.AccountView
   alias Pleroma.Web.AdminAPI.ConfigView
   alias Pleroma.Web.AdminAPI.ModerationLogView
@@ -31,7 +32,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
   alias Pleroma.Web.CommonAPI
   alias Pleroma.Web.Endpoint
   alias Pleroma.Web.MastodonAPI.AppView
-  alias Pleroma.Web.MastodonAPI.StatusView
+  alias Pleroma.Web.MastodonAPI
   alias Pleroma.Web.OAuth.App
   alias Pleroma.Web.Router
 
@@ -280,7 +281,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
       })
 
     conn
-    |> put_view(Pleroma.Web.AdminAPI.StatusView)
+    |> put_view(AdminAPI.StatusView)
     |> render("index.json", %{activities: activities, as: :activity})
   end
 
@@ -299,7 +300,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
         })
 
       conn
-      |> put_view(StatusView)
+      |> put_view(MastodonAPI.StatusView)
       |> render("index.json", %{activities: activities, as: :activity})
     else
       _ -> {:error, :not_found}
@@ -829,14 +830,14 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
       })
 
     conn
-    |> put_view(Pleroma.Web.AdminAPI.StatusView)
+    |> put_view(AdminAPI.StatusView)
     |> render("index.json", %{activities: activities, as: :activity})
   end
 
   def status_show(conn, %{"id" => id}) do
     with %Activity{} = activity <- Activity.get_by_id(id) do
       conn
-      |> put_view(StatusView)
+      |> put_view(MastodonAPI.StatusView)
       |> render("show.json", %{activity: activity})
     else
       _ -> errors(conn, {:error, :not_found})
@@ -856,7 +857,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
       })
 
       conn
-      |> put_view(StatusView)
+      |> put_view(MastodonAPI.StatusView)
       |> render("show.json", %{activity: activity})
     end
   end
index 8471b0f099262534c72a90c8f806180b8042fbe7..46dadb5ee546084698ab92819800e35c66ea76bf 100644 (file)
@@ -122,7 +122,7 @@ defmodule Pleroma.Web.AdminAPI.AccountView do
   end
 
   def merge_account_views(%User{} = user) do
-    MastodonAPI.AccountView.render("show.json", %{user: user, skip_relationships: true})
+    MastodonAPI.AccountView.render("show.json", %{user: user})
     |> Map.merge(AdminAPI.AccountView.render("show.json", %{user: user}))
   end
 
index 3df8dc0f1e607c0be841c1f9eaab2af93e8f4daf..bce27897fd9b17a6559e704309da16f0dde3ded3 100644 (file)
@@ -22,12 +22,7 @@ defmodule Pleroma.Web.ChatChannel do
 
     if String.length(text) in 1..Pleroma.Config.get([:instance, :chat_limit]) do
       author = User.get_cached_by_nickname(user_name)
-
-      author =
-        Pleroma.Web.MastodonAPI.AccountView.render("show.json",
-          user: author,
-          skip_relationships: true
-        )
+      author = Pleroma.Web.MastodonAPI.AccountView.render("show.json", user: author)
 
       message = ChatChannelState.add_message(%{text: text, author: author})
 
index 5d3318ce06ff657a7406ef306059fe0794bd62a1..c30ae1c7aba23cd4a3cf0b665a86c3fd4fe389c2 100644 (file)
@@ -86,8 +86,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do
     AccountView.render("index.json",
       users: accounts,
       for: options[:for_user],
-      as: :user,
-      skip_relationships: true
+      as: :user
     )
   end
 
index c1786a322d3e2c3c3a8dc7143b8b9243ea12ede7..b3a14d255966e4b38e956aebee789dd2ae8a4373 100644 (file)
@@ -12,33 +12,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
   alias Pleroma.Web.MastodonAPI.AccountView
   alias Pleroma.Web.MediaProxy
 
-  # Default behaviour for account view is to include embedded relationships
-  #   (e.g. when accounts are rendered on their own [e.g. a list of search results], not as
-  #   embedded content in notifications / statuses).
-  # This option must be explicitly set to false when rendering accounts as embedded content.
-  defp initialize_skip_relationships(opts) do
-    Map.merge(%{skip_relationships: false}, opts)
-  end
-
   def render("index.json", %{users: users} = opts) do
-    opts = initialize_skip_relationships(opts)
-
-    reading_user = opts[:for]
-
-    relationships_opt =
-      cond do
-        Map.has_key?(opts, :relationships) ->
-          opts[:relationships]
-
-        is_nil(reading_user) || opts[:skip_relationships] ->
-          UserRelationship.view_relationships_option(nil, [])
-
-        true ->
-          UserRelationship.view_relationships_option(reading_user, users)
-      end
-
-    opts = Map.put(opts, :relationships, relationships_opt)
-
     users
     |> render_many(AccountView, "show.json", opts)
     |> Enum.filter(&Enum.any?/1)
@@ -169,8 +143,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
   end
 
   defp do_render("show.json", %{user: user} = opts) do
-    opts = initialize_skip_relationships(opts)
-
     user = User.sanitize_html(user, User.html_filter_policy(opts[:for]))
     display_name = user.name || user.nickname
 
@@ -203,17 +175,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
         }
       end)
 
-    relationship =
-      if opts[:skip_relationships] do
-        %{}
-      else
-        render("relationship.json", %{
-          user: opts[:for],
-          target: user,
-          relationships: opts[:relationships]
-        })
-      end
-
     %{
       id: to_string(user.id),
       username: username_from_nickname(user.nickname),
@@ -252,7 +213,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
         hide_followers: user.hide_followers,
         hide_follows: user.hide_follows,
         hide_favorites: user.hide_favorites,
-        relationship: relationship,
+        relationship: %{},
         skip_thread_containment: user.skip_thread_containment,
         background_image: image_url(user.background) |> MediaProxy.url()
       }
index 0349bcc839cc88ced670baac868124c21e321c0e..a53218d59db8701f29f4ae0ec1b54753d9c01f6e 100644 (file)
@@ -84,12 +84,10 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do
     # Note: :relationships contain user mutes (needed for :muted flag in :status)
     status_render_opts = %{relationships: opts[:relationships]}
 
-    account_render_opts = %{skip_relationships: true}
-
     with %{id: _} = account <-
            AccountView.render(
              "show.json",
-             Map.merge(account_render_opts, %{user: actor, for: reading_user})
+             %{user: actor, for: reading_user}
            ) do
       response = %{
         id: to_string(notification.id),
@@ -112,7 +110,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do
           put_status(response, parent_activity_fn.(), reading_user, status_render_opts)
 
         "move" ->
-          put_target(response, activity, reading_user, account_render_opts)
+          put_target(response, activity, reading_user, %{})
 
         "pleroma:emoji_reaction" ->
           response
index 8762f23fd6ecc40c0cce9165c7ba29c7c25294cd..f7895c514aad3740d5f6e5dbdeb77415936a2cf7 100644 (file)
@@ -160,8 +160,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
       account:
         AccountView.render("show.json", %{
           user: user,
-          for: opts[:for],
-          skip_relationships: true
+          for: opts[:for]
         }),
       in_reply_to_id: nil,
       in_reply_to_account_id: nil,
@@ -327,8 +326,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
       account:
         AccountView.render("show.json", %{
           user: user,
-          for: opts[:for],
-          skip_relationships: true
+          for: opts[:for]
         }),
       in_reply_to_id: reply_to && to_string(reply_to.id),
       in_reply_to_account_id: reply_to_user && to_string(reply_to_user.id),
index b61a6791b2868a90fc99a53d3b3fbdb92ebee43a..e834133b27100724f1cf75c9202bb0f08f8946c0 100644 (file)
@@ -73,8 +73,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do
                 AccountView.render("index.json", %{
                   users: users,
                   for: user,
-                  as: :user,
-                  skip_relationships: true
+                  as: :user
                 }),
               me: !!(user && user.ap_id in user_ap_ids)
             }
index 5fb162141ea0685253be1008a8e95b95fc2e1b87..3c1aeb6d5d0915f8ae71c1a24e51ddbf5bb64290 100644 (file)
@@ -295,82 +295,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
     end
   end
 
-  test "represent an embedded relationship" do
-    user =
-      insert(:user, %{
-        follower_count: 0,
-        note_count: 5,
-        actor_type: "Service",
-        nickname: "shp@shitposter.club",
-        inserted_at: ~N[2017-08-15 15:47:06.597036]
-      })
-
-    other_user = insert(:user)
-    {:ok, other_user} = User.follow(other_user, user)
-    {:ok, _user_relationship} = User.block(other_user, user)
-    {:ok, _} = User.follow(insert(:user), user)
-
-    expected = %{
-      id: to_string(user.id),
-      username: "shp",
-      acct: user.nickname,
-      display_name: user.name,
-      locked: false,
-      created_at: "2017-08-15T15:47:06.000Z",
-      followers_count: 1,
-      following_count: 0,
-      statuses_count: 5,
-      note: user.bio,
-      url: user.ap_id,
-      avatar: "http://localhost:4001/images/avi.png",
-      avatar_static: "http://localhost:4001/images/avi.png",
-      header: "http://localhost:4001/images/banner.png",
-      header_static: "http://localhost:4001/images/banner.png",
-      emojis: [],
-      fields: [],
-      bot: true,
-      source: %{
-        note: user.bio,
-        sensitive: false,
-        pleroma: %{
-          actor_type: "Service",
-          discoverable: false
-        },
-        fields: []
-      },
-      pleroma: %{
-        background_image: nil,
-        confirmation_pending: false,
-        tags: [],
-        is_admin: false,
-        is_moderator: false,
-        hide_favorites: true,
-        hide_followers: false,
-        hide_follows: false,
-        hide_followers_count: false,
-        hide_follows_count: false,
-        relationship: %{
-          id: to_string(user.id),
-          following: false,
-          followed_by: false,
-          blocking: true,
-          blocked_by: false,
-          subscribing: false,
-          muting: false,
-          muting_notifications: false,
-          requested: false,
-          domain_blocking: false,
-          showing_reblogs: true,
-          endorsed: false
-        },
-        skip_thread_containment: false
-      }
-    }
-
-    assert expected ==
-             AccountView.render("show.json", %{user: refresh_record(user), for: other_user})
-  end
-
   test "returns the settings store if the requesting user is the represented user and it's requested specifically" do
     user = insert(:user, pleroma_settings_store: %{fe: "test"})
 
index 61e6e3ae5988097d4cd9bbe1dcaf05ba7e10aad9..7cdba2fe0626e06ee88b7813a148afa6ccef6631 100644 (file)
@@ -45,8 +45,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
       account:
         AccountView.render("show.json", %{
           user: user,
-          for: mentioned_user,
-          skip_relationships: true
+          for: mentioned_user
         }),
       status: StatusView.render("show.json", %{activity: activity, for: mentioned_user}),
       created_at: Utils.to_masto_date(notification.inserted_at)
@@ -67,8 +66,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
       id: to_string(notification.id),
       pleroma: %{is_seen: false},
       type: "favourite",
-      account:
-        AccountView.render("show.json", %{user: another_user, for: user, skip_relationships: true}),
+      account: AccountView.render("show.json", %{user: another_user, for: user}),
       status: StatusView.render("show.json", %{activity: create_activity, for: user}),
       created_at: Utils.to_masto_date(notification.inserted_at)
     }
@@ -88,8 +86,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
       id: to_string(notification.id),
       pleroma: %{is_seen: false},
       type: "reblog",
-      account:
-        AccountView.render("show.json", %{user: another_user, for: user, skip_relationships: true}),
+      account: AccountView.render("show.json", %{user: another_user, for: user}),
       status: StatusView.render("show.json", %{activity: reblog_activity, for: user}),
       created_at: Utils.to_masto_date(notification.inserted_at)
     }
@@ -107,8 +104,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
       id: to_string(notification.id),
       pleroma: %{is_seen: false},
       type: "follow",
-      account:
-        AccountView.render("show.json", %{user: follower, for: followed, skip_relationships: true}),
+      account: AccountView.render("show.json", %{user: follower, for: followed}),
       created_at: Utils.to_masto_date(notification.inserted_at)
     }
 
@@ -151,10 +147,8 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
       id: to_string(notification.id),
       pleroma: %{is_seen: false},
       type: "move",
-      account:
-        AccountView.render("show.json", %{user: old_user, for: follower, skip_relationships: true}),
-      target:
-        AccountView.render("show.json", %{user: new_user, for: follower, skip_relationships: true}),
+      account: AccountView.render("show.json", %{user: old_user, for: follower}),
+      target: AccountView.render("show.json", %{user: new_user, for: follower}),
       created_at: Utils.to_masto_date(notification.inserted_at)
     }
 
@@ -179,8 +173,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
       pleroma: %{is_seen: false},
       type: "pleroma:emoji_reaction",
       emoji: "☕",
-      account:
-        AccountView.render("show.json", %{user: other_user, for: user, skip_relationships: true}),
+      account: AccountView.render("show.json", %{user: other_user, for: user}),
       status: StatusView.render("show.json", %{activity: activity, for: user}),
       created_at: Utils.to_masto_date(notification.inserted_at)
     }