Return total for reports
authorMaxim Filippov <colixer@gmail.com>
Wed, 4 Sep 2019 17:08:13 +0000 (20:08 +0300)
committerMaxim Filippov <colixer@gmail.com>
Wed, 4 Sep 2019 17:08:13 +0000 (20:08 +0300)
CHANGELOG.md
docs/api/admin_api.md
lib/pleroma/web/admin_api/admin_api_controller.ex
lib/pleroma/web/admin_api/views/report_view.ex
test/web/admin_api/admin_api_controller_test.exs

index a414ba5e01145ffbcf999a5bddf91dffad5f44c9..942605f287716cdd2b79ab6ff4463540735dace4 100644 (file)
@@ -21,7 +21,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 - Mastodon API: Unsubscribe followers when they unfollow a user
 - AdminAPI: Add "godmode" while fetching user statuses (i.e. admin can see private statuses)
 - Improve digest email template
-– Pagination: (optional) return `total` alongside with `items` when paginating
+- Pagination: (optional) return `total` alongside with `items` when paginating
+- Admin API: Return `total` when querying for reports
 
 ### Fixed
 - Following from Osada
index d79c342be3c092d1337ad037fa228ef6b1324a97..5a090c720b7e46600dd8620be0cd530ec85240f5 100644 (file)
@@ -313,6 +313,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
 
 ```json
 {
+  "total" : 1,
   "reports": [
     {
       "account": {
index 544b9d7d8b530018120c3f1a9f15af36a223e43a..2a1cc59e55d69f3f7098b5242bf9f0b86883fe30 100644 (file)
@@ -442,11 +442,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
       params
       |> Map.put("type", "Flag")
       |> Map.put("skip_preload", true)
+      |> Map.put("total", true)
 
-    reports =
-      []
-      |> ActivityPub.fetch_activities(params)
-      |> Enum.reverse()
+    reports = ActivityPub.fetch_activities([], params)
 
     conn
     |> put_view(ReportView)
index a25f3f1fed39c80f3685b1301a7535df9e4e5a79..0b8745b2e7d69277f4d560c8e57ad4fbf28920cd 100644 (file)
@@ -12,7 +12,8 @@ defmodule Pleroma.Web.AdminAPI.ReportView do
 
   def render("index.json", %{reports: reports}) do
     %{
-      reports: render_many(reports, __MODULE__, "show.json", as: :report)
+      reports: render_many(reports[:items], __MODULE__, "show.json", as: :report),
+      total: reports[:total]
     }
   end
 
index 4e2c274315d678782e4112d6d8d8c00282b72333..b1ddd898ba614170218a1999d4e38a4af7ac6c27 100644 (file)
@@ -1309,6 +1309,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
         |> json_response(:ok)
 
       assert Enum.empty?(response["reports"])
+      assert response["total"] == 0
     end
 
     test "returns reports", %{conn: conn} do
@@ -1331,6 +1332,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
 
       assert length(response["reports"]) == 1
       assert report["id"] == report_id
+
+      assert response["total"] == 1
     end
 
     test "returns reports with specified state", %{conn: conn} do
@@ -1364,6 +1367,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
       assert length(response["reports"]) == 1
       assert open_report["id"] == first_report_id
 
+      assert response["total"] == 1
+
       response =
         conn
         |> get("/api/pleroma/admin/reports", %{
@@ -1376,6 +1381,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
       assert length(response["reports"]) == 1
       assert closed_report["id"] == second_report_id
 
+      assert response["total"] == 1
+
       response =
         conn
         |> get("/api/pleroma/admin/reports", %{
@@ -1384,6 +1391,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
         |> json_response(:ok)
 
       assert Enum.empty?(response["reports"])
+      assert response["total"] == 0
     end
 
     test "returns 403 when requested by a non-admin" do