AdminAPI: Merge account views for list instance statuses
authorMaxim Filippov <colixer@gmail.com>
Wed, 11 Dec 2019 15:57:36 +0000 (18:57 +0300)
committerMaxim Filippov <colixer@gmail.com>
Wed, 11 Dec 2019 15:57:36 +0000 (18:57 +0300)
lib/pleroma/web/admin_api/admin_api_controller.ex
lib/pleroma/web/admin_api/views/status_view.ex [new file with mode: 0644]

index 0a8a56cd8950b80faff6e88ba4ba54eaf93df99e..bc90eac722f02240a5b9492a08b4d2c9c74395da 100644 (file)
@@ -240,7 +240,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
       })
 
     conn
       })
 
     conn
-    |> put_view(StatusView)
+    |> put_view(Pleroma.Web.AdminAPI.StatusView)
     |> render("index.json", %{activities: activities, as: :activity})
   end
 
     |> render("index.json", %{activities: activities, as: :activity})
   end
 
diff --git a/lib/pleroma/web/admin_api/views/status_view.ex b/lib/pleroma/web/admin_api/views/status_view.ex
new file mode 100644 (file)
index 0000000..6f2b2b0
--- /dev/null
@@ -0,0 +1,42 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.AdminAPI.StatusView do
+  use Pleroma.Web, :view
+
+  require Pleroma.Constants
+
+  alias Pleroma.User
+
+  def render("index.json", opts) do
+    render_many(opts.activities, __MODULE__, "show.json", opts)
+  end
+
+  def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} = opts) do
+    user = get_user(activity.data["actor"])
+
+    Pleroma.Web.MastodonAPI.StatusView.render("show.json", opts)
+    |> Map.merge(%{account: merge_account_views(user)})
+  end
+
+  defp merge_account_views(%User{} = user) do
+    Pleroma.Web.MastodonAPI.AccountView.render("show.json", %{user: user})
+    |> Map.merge(Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: user}))
+  end
+
+  defp merge_account_views(_), do: %{}
+
+  defp get_user(ap_id) do
+    cond do
+      user = User.get_cached_by_ap_id(ap_id) ->
+        user
+
+      user = User.get_by_guessed_nickname(ap_id) ->
+        user
+
+      true ->
+        User.error_user(ap_id)
+    end
+  end
+end