aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-12-23 15:35:49 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2019-01-20 02:27:48 +0000
commit420651157becb8fac62e651d14376b6334316121 (patch)
treefddd96951a840d44b85843f23b9de80d3e54b3f2
parentddae43eb43c5c63eeb0e93e60917b99b3ffb41d0 (diff)
downloadpleroma-420651157becb8fac62e651d14376b6334316121.tar.gz
transmogrifier: don't apply heuristics against messages which have `directMessage` set true
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex20
1 files changed, 13 insertions, 7 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index e9a801cf5..5400aa657 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -113,14 +113,10 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def fix_explicit_addressing(object, _explicit_mentions), do: object
- def fix_addressing(object) do
- object =
- object
- |> fix_addressing_list("to")
- |> fix_addressing_list("cc")
- |> fix_addressing_list("bto")
- |> fix_addressing_list("bcc")
+ # if directMessage flag is set to true, leave the addressing alone
+ def fix_explicit_addressing(%{"directMessage" => true} = object), do: object
+ def fix_explicit_addressing(object) do
explicit_mentions =
object
|> Utils.determine_explicit_mentions()
@@ -131,6 +127,14 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|> fix_explicit_addressing(explicit_mentions)
end
+ def fix_addressing(object) do
+ object
+ |> fix_addressing_list("to")
+ |> fix_addressing_list("cc")
+ |> fix_addressing_list("bto")
+ |> fix_addressing_list("bcc")
+ end
+
def fix_actor(%{"attributedTo" => actor} = object) do
object
|> Map.put("actor", get_actor(%{"actor" => actor}))
@@ -363,6 +367,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
data =
Map.put(data, "actor", actor)
|> fix_addressing
+ |> fix_explicit_addressing
with nil <- Activity.get_create_activity_by_object_ap_id(object["id"]),
%User{} = user <- User.get_or_fetch_by_ap_id(data["actor"]) do
@@ -378,6 +383,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
additional:
Map.take(data, [
"cc",
+ "directMessage",
"id"
])
}