* `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
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}