implemented tweaks
authorKaren Konou <konoukaren@gmail.com>
Sun, 3 Feb 2019 21:46:06 +0000 (22:46 +0100)
committerKaren Konou <konoukaren@gmail.com>
Sun, 3 Feb 2019 21:46:06 +0000 (22:46 +0100)
docs/config.md
lib/pleroma/config/deprecation_warnings.ex
lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex

index a1fd8e3f4b65af96b2ac96fb91ae2ca92475bea9..ed253e906a9c83481ce68c7fcb6cb6ce546a4ea4 100644 (file)
@@ -148,7 +148,7 @@ This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:i
 * `allow_direct`: whether to allow direct messages
 
 ## :mrf_hellthread
-* `delist_threshold`: Number of mentioned users after which the message gets delisted. Set to 0 to disable.
+* `delist_threshold`: Number of mentioned users after which the message gets delisted (the message can still be seen, but it will not show up in public timelines and mentioned users won't get notifications about it). Set to 0 to disable.
 * `reject_threshold`: Number of mentioned users after which the messaged gets rejected. Set to 0 to disable.
 
 ## :media_proxy
index dc50682eed19cf09b6c5805929a3d119202ce55d..0eb1833aab27052bc17cfaeeab8dde3d06ffbb80 100644 (file)
@@ -12,6 +12,13 @@ defmodule Pleroma.Config.DeprecationWarnings do
       You are using the old configuration mechanism for the frontend. Please check config.md.
       """)
     end
+
+    if Pleroma.Config.get(:mrf_hellthread, :threshold) do
+      Logger.warn("""
+      !!!DEPRECATION WARNING!!!
+      You are using the old configuration mechanism for the hellthread filter. Please check config.md.
+      """)
+    end
   end
 
   def warn do
index d95424493e0c7ccec1fe99182751527f176f8e76..cd9f9b1c4dfeb1dc5721338e67a0f4f5e6892c5f 100644 (file)
@@ -6,27 +6,34 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
   alias Pleroma.User
   @behaviour Pleroma.Web.ActivityPub.MRF
 
+  defp delist_message(object) do
+    follower_collection = User.get_by_ap_id(object["actor"].follower_address)
+
+    object
+    |> Kernel.update_in(["to"], [follower_collection])
+    |> Kernel.update_in(["cc"], ["https://www.w3.org/ns/activitystreams#Public"])
+  end
+
   @impl true
   def filter(%{"type" => "Create"} = object) do
     delist_threshold = Pleroma.Config.get([:mrf_hellthread, :delist_threshold])
-    reject_threshold = Pleroma.Config.get([:mrf_hellthread, :reject_threshold])
+
+    reject_threshold =
+      Pleroma.Config.get(
+        [:mrf_hellthread, :reject_threshold],
+        Pleroma.Config.get([:mrf_hellthread, :threshold])
+      )
+
     recipients = (object["to"] || []) ++ (object["cc"] || [])
 
     cond do
-      length(recipients) > reject_threshold and reject_threshold != 0 ->
+      length(recipients) > reject_threshold and reject_threshold > 0 ->
         {:reject, nil}
 
-      length(recipients) > delist_threshold and delist_threshold != 0 ->
+      length(recipients) > delist_threshold and delist_threshold > 0 ->
         if Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") or
-             Enum.member?(object["cc"], "https://www.w3.org/ns/activitystreams#Public") do
-          follower_collection = User.get_by_ap_id(object["actor"].follower_address)
-
-          object
-          |> Kernel.update_in(["object", "to"], [follower_collection])
-          |> Kernel.update_in(["object", "cc"], ["https://www.w3.org/ns/activitystreams#Public"])
-          |> Kernel.update_in(["to"], [follower_collection])
-          |> Kernel.update_in(["cc"], ["https://www.w3.org/ns/activitystreams#Public"])
-
+             Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") do
+          delist_message(object)
           {:ok, object}
         else
           {:ok, object}