diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 17cd3b1c2..fc04cc9a1 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -100,6 +100,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do """ def prepare_outgoing(%{"type" => "Create", "object" => %{"type" => "Note"} = object} = data) do object = object + |> set_sensitive |> add_hashtags |> add_mention_tags |> add_attributed_to @@ -144,6 +145,11 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do Map.put(object, "conversation", object["context"]) end + def set_sensitive(object) do + tags = object["tag"] || [] + Map.put(object, "sensitive", "nsfw" in tags) + end + def add_attributed_to(object) do attributedTo = object["attributedTo"] || object["actor"] diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index ec608a86a..6271e200e 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -120,6 +120,15 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert Enum.member?(object["tag"], expected_mention) end + test "it adds the sensitive property" do + user = insert(:user) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "#nsfw hey"}) + {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) + + assert modified["object"]["sensitive"] + end + test "it adds the json-ld context and the conversation property" do user = insert(:user)