diff --git a/config/config.exs b/config/config.exs index 0493b0ce8..ce415581e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -160,11 +160,6 @@ config :logger, :ex_syslogger, format: "$metadata[$level] $message", metadata: [:request_id] -config :quack, - level: :warn, - meta: [:all], - webhook_url: "https://hooks.slack.com/services/YOUR-KEY-HERE" - config :mime, :types, %{ "application/xml" => ["xml"], "application/xrd+xml" => ["xrd+xml"], diff --git a/config/description.exs b/config/description.exs index f83ea8ebd..7e7c799f3 100644 --- a/config/description.exs +++ b/config/description.exs @@ -815,13 +815,6 @@ config :pleroma, :config_description, [ 1_000 ] }, - %{ - key: :report_strip_status, - label: "Report strip status", - type: :boolean, - description: - "Strip associated statuses in reports to ids when closed/resolved, otherwise keep a copy" - }, %{ key: :safe_dm_mentions, label: "Safe DM mentions", diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index db1630930..6a58020a0 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -49,7 +49,6 @@ To add configuration to your config file, you can copy it from the base config. * `autofollowing_nicknames`: Set to nicknames of (local) users that automatically follows every newly registered user. * `attachment_links`: Set to true to enable automatically adding attachment link text to statuses. * `max_report_comment_size`: The maximum size of the report comment (Default: `1000`). -* `report_strip_status`: Strip associated statuses in reports to ids when closed/resolved, otherwise keep a copy. * `safe_dm_mentions`: If set to true, only mentions at the beginning of a post will be used to address people in direct messages. This is to prevent accidental mentioning of people when talking about them (e.g. "@friend hey i really don't like @enemy"). Default: `false`. * `healthcheck`: If set to true, system data will be shown on ``/api/v1/pleroma/healthcheck``. * `remote_post_retention_days`: The default amount of days to retain remote posts when pruning the database. diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index dc0c2e9fa..77c3c5e5c 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -800,21 +800,22 @@ defmodule Pleroma.Web.ActivityPub.Utils do ActivityPub.fetch_activities([], params, :offset) end - defp maybe_strip_report_status(data, state) do - with true <- Config.get([:instance, :report_strip_status]), - true <- state in @strip_status_report_states, - {:ok, stripped_activity} = strip_report_status_data(%Activity{data: data}) do - data |> Map.put("object", stripped_activity.data["object"]) - else - _ -> data - end - end + def update_report_state(%Activity{} = activity, state) + when state in @strip_status_report_states do + {:ok, stripped_activity} = strip_report_status_data(activity) - def update_report_state(%Activity{} = activity, state) when state in @supported_report_states do new_data = activity.data |> Map.put("state", state) - |> maybe_strip_report_status(state) + |> Map.put("object", stripped_activity.data["object"]) + + activity + |> Changeset.change(data: new_data) + |> Repo.update() + end + + def update_report_state(%Activity{} = activity, state) when state in @supported_report_states do + new_data = Map.put(activity.data, "state", state) activity |> Changeset.change(data: new_data) diff --git a/lib/pleroma/web/admin_api/report.ex b/lib/pleroma/web/admin_api/report.ex index 6856bfcb3..8d1abfa56 100644 --- a/lib/pleroma/web/admin_api/report.ex +++ b/lib/pleroma/web/admin_api/report.ex @@ -4,7 +4,6 @@ defmodule Pleroma.Web.AdminAPI.Report do alias Pleroma.Activity - alias Pleroma.Object alias Pleroma.User def extract_report_info( @@ -17,42 +16,10 @@ defmodule Pleroma.Web.AdminAPI.Report do status_ap_ids |> Enum.reject(&is_nil(&1)) |> Enum.map(fn - act when is_map(act) -> - Activity.get_by_ap_id_with_object(act["id"]) || make_fake_activity(act, user) - - act when is_binary(act) -> - Activity.get_by_ap_id_with_object(act) + act when is_map(act) -> Activity.get_by_ap_id_with_object(act["id"]) + act when is_binary(act) -> Activity.get_by_ap_id_with_object(act) end) %{report: report, user: user, account: account, statuses: statuses} end - - defp make_fake_activity(act, user) do - %Activity{ - id: "pleroma:fake", - data: %{ - "actor" => user.ap_id, - "type" => "Create", - "to" => [], - "cc" => [], - "object" => act["id"], - "published" => act["published"], - "id" => act["id"], - "context" => "pleroma:fake" - }, - recipients: [user.ap_id], - object: %Object{ - data: %{ - "actor" => user.ap_id, - "type" => "Note", - "content" => act["content"], - "published" => act["published"], - "to" => [], - "cc" => [], - "id" => act["id"], - "context" => "pleroma:fake" - } - } - } - end end diff --git a/test/pleroma/web/admin_api/controllers/report_controller_test.exs b/test/pleroma/web/admin_api/controllers/report_controller_test.exs index 164cbb95b..30dcb87e2 100644 --- a/test/pleroma/web/admin_api/controllers/report_controller_test.exs +++ b/test/pleroma/web/admin_api/controllers/report_controller_test.exs @@ -54,32 +54,6 @@ defmodule Pleroma.Web.AdminAPI.ReportControllerTest do assert notes["content"] == "this is an admin note" end - test "renders reported content even if the status is deleted", %{conn: conn} do - [reporter, target_user] = insert_pair(:user) - activity = insert(:note_activity, user: target_user) - activity = Activity.normalize(activity) - - {:ok, %{id: report_id}} = - CommonAPI.report(reporter, %{ - account_id: target_user.id, - comment: "I feel offended", - status_ids: [activity.id] - }) - - CommonAPI.delete(activity.id, target_user) - - response = - conn - |> get("/api/pleroma/admin/reports/#{report_id}") - |> json_response_and_validate_schema(:ok) - - assert response["id"] == report_id - - assert [status] = response["statuses"] - assert activity.data["id"] == status["uri"] - assert activity.object.data["content"] == status["content"] - end - test "returns 404 when report id is invalid", %{conn: conn} do conn = get(conn, "/api/pleroma/admin/reports/test") diff --git a/test/pleroma/web/common_api_test.exs b/test/pleroma/web/common_api_test.exs index 8f783a8cf..9735df9ed 100644 --- a/test/pleroma/web/common_api_test.exs +++ b/test/pleroma/web/common_api_test.exs @@ -1194,32 +1194,6 @@ defmodule Pleroma.Web.CommonAPITest do assert activity_id == activity.data["id"] end - test "updates report state, don't strip when report_strip_status is false" do - clear_config([:instance, :report_strip_status], false) - - [reporter, target_user] = insert_pair(:user) - activity = insert(:note_activity, user: target_user) - - {:ok, %Activity{id: report_id, data: report_data}} = - CommonAPI.report(reporter, %{ - account_id: target_user.id, - comment: "I feel offended", - status_ids: [activity.id] - }) - - {:ok, report} = CommonAPI.update_report_state(report_id, "resolved") - - assert report.data["state"] == "resolved" - - [reported_user, reported_activity] = report.data["object"] - - assert reported_user == target_user.ap_id - assert is_map(reported_activity) - - assert reported_activity["content"] == - report_data["object"] |> Enum.at(1) |> Map.get("content") - end - test "does not update report state when state is unsupported" do [reporter, target_user] = insert_pair(:user) activity = insert(:note_activity, user: target_user)