aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/admin_api
diff options
context:
space:
mode:
authorMaxim Filippov <colixer@gmail.com>2019-10-07 15:01:18 +0300
committerMaxim Filippov <colixer@gmail.com>2019-10-07 15:39:07 +0300
commit7aceaa517be7b109a9acc15fb4914535b536b66c (patch)
tree61f2d13f34cc5d14707dba41211529f76b1b6931 /lib/pleroma/web/admin_api
parent8dcc2f9f5ecbbc81bc026c85582695de4fbc1a0f (diff)
downloadpleroma-7aceaa517be7b109a9acc15fb4914535b536b66c.tar.gz
Admin API: Reports, grouped by status
Diffstat (limited to 'lib/pleroma/web/admin_api')
-rw-r--r--lib/pleroma/web/admin_api/admin_api_controller.ex17
-rw-r--r--lib/pleroma/web/admin_api/views/report_view.ex20
2 files changed, 27 insertions, 10 deletions
diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex
index 0e8c9dac8..463dd327a 100644
--- a/lib/pleroma/web/admin_api/admin_api_controller.ex
+++ b/lib/pleroma/web/admin_api/admin_api_controller.ex
@@ -10,6 +10,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
alias Pleroma.UserInviteToken
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.ActivityPub.Relay
+ alias Pleroma.Web.ActivityPub.Utils
alias Pleroma.Web.AdminAPI.AccountView
alias Pleroma.Web.AdminAPI.Config
alias Pleroma.Web.AdminAPI.ConfigView
@@ -455,19 +456,15 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
def list_reports(conn, params) do
{page, page_size} = page_params(params)
- params =
- params
- |> Map.put("type", "Flag")
- |> Map.put("skip_preload", true)
- |> Map.put("total", true)
- |> Map.put("limit", page_size)
- |> Map.put("offset", (page - 1) * page_size)
-
- reports = ActivityPub.fetch_activities([], params, :offset)
+ conn
+ |> put_view(ReportView)
+ |> render("index.json", %{reports: Utils.get_reports(params, page, page_size)})
+ end
+ def list_grouped_reports(conn, _params) do
conn
|> put_view(ReportView)
- |> render("index.json", %{reports: reports})
+ |> render("index_grouped.json", Utils.get_reports_grouped_by_status())
end
def report_show(conn, %{"id" => id}) do
diff --git a/lib/pleroma/web/admin_api/views/report_view.ex b/lib/pleroma/web/admin_api/views/report_view.ex
index 101a74c63..ac25925da 100644
--- a/lib/pleroma/web/admin_api/views/report_view.ex
+++ b/lib/pleroma/web/admin_api/views/report_view.ex
@@ -42,6 +42,26 @@ defmodule Pleroma.Web.AdminAPI.ReportView do
}
end
+ def render("index_grouped.json", %{groups: groups}) do
+ reports =
+ Enum.map(groups, fn group ->
+ %{
+ date: group[:date],
+ account: merge_account_views(group[:account]),
+ status: StatusView.render("show.json", %{activity: group[:status]}),
+ actors: Enum.map(group[:actors], &merge_account_views/1),
+ reports:
+ group[:reports]
+ |> Enum.map(&Report.extract_report_info(&1))
+ |> Enum.map(&render(__MODULE__, "show.json", &1))
+ }
+ end)
+
+ %{
+ reports: reports
+ }
+ 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}))