Browse Source

Fetch account from report, not from status (it might be deleted)

feature/compile_get
Maxim Filippov 4 years ago
parent
commit
fcabcab443
3 changed files with 29 additions and 3 deletions
  1. +8
    -1
      lib/pleroma/web/activity_pub/utils.ex
  2. +2
    -2
      lib/pleroma/web/admin_api/admin_api_controller.ex
  3. +19
    -0
      test/web/admin_api/admin_api_controller_test.exs

+ 8
- 1
lib/pleroma/web/activity_pub/utils.ex View File

@@ -798,11 +798,18 @@ defmodule Pleroma.Web.ActivityPub.Utils do
reports = get_reports_by_status_id(activity["id"])
max_date = Enum.max_by(reports, &NaiveDateTime.from_iso8601!(&1.data["published"]))
actors = Enum.map(reports, & &1.user_actor)
[%{data: %{"object" => [account_id | _]}} | _] = reports

account =
AccountView.render("show.json", %{
user: User.get_by_ap_id(account_id)
})

status = get_status_data(activity)

%{
date: max_date.data["published"],
account: activity["actor"],
account: account,
status: status,
actors: Enum.uniq(actors),
reports: reports


+ 2
- 2
lib/pleroma/web/admin_api/admin_api_controller.ex View File

@@ -647,11 +647,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
end

def list_grouped_reports(conn, _params) do
reports = Utils.get_reported_activities()
statuses = Utils.get_reported_activities()

conn
|> put_view(ReportView)
|> render("index_grouped.json", Utils.get_reports_grouped_by_status(reports))
|> render("index_grouped.json", Utils.get_reports_grouped_by_status(statuses))
end

def report_show(conn, %{"id" => id}) do


+ 19
- 0
test/web/admin_api/admin_api_controller_test.exs View File

@@ -1755,6 +1755,25 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do

assert length(Enum.filter(response["reports"], &(&1["status"]["deleted"] == false))) == 2
end

test "account not empty if status was deleted", %{
conn: conn,
first_report: first_report,
first_status: first_status,
target_user: target_user
} do
{:ok, _} = CommonAPI.update_report_state(first_report.id, "resolved")
{:ok, _} = CommonAPI.delete(first_status.id, target_user)

refute Activity.get_by_ap_id(first_status.id)

response =
conn
|> get("/api/pleroma/admin/grouped_reports")
|> json_response(:ok)

assert Enum.find(response["reports"], &(&1["status"]["deleted"] == true))["account"]
end
end

describe "POST /api/pleroma/admin/reports/:id/respond" do


Loading…
Cancel
Save