Introduce optional unfurling of nsfw content
authorrinpatch <rinpatch@sdf.org>
Thu, 17 Jan 2019 08:00:02 +0000 (11:00 +0300)
committerrinpatch <rinpatch@sdf.org>
Thu, 17 Jan 2019 08:00:02 +0000 (11:00 +0300)
docs/config.md
lib/pleroma/web/metadata.ex
lib/pleroma/web/metadata/opengraph.ex
lib/pleroma/web/metadata/twitter_card.ex

index c2104a9e8500a2423e11812385aa7d6d5fc6fe95..b9ad2aef7a3123383d032dd2b04c2a30436ca19e 100644 (file)
@@ -212,6 +212,7 @@ curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerando
 * `max_retries`: The maximum number of times a federation job is retried
 
 ## Pleroma.Web.Metadata
-* `providers`: a list of metadata providers to enable. Providers avalible:
+* `providers`: a list of metadata providers to enable. Providers availible:
   * Pleroma.Web.Metadata.Providers.OpenGraph
   * Pleroma.Web.Metadata.Providers.TwitterCard
+* `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews
index 2164b0fe866d89ddbb99b4817e76b4f83aa0b243..be3c384ae9e19961d58a2f2bdfccf21f1769a89f 100644 (file)
@@ -28,4 +28,12 @@ defmodule Pleroma.Web.Metadata do
         raise ArgumentError, message: "make_tag invalid args"
     end
   end
+
+  def activity_nsfw?(%{data: %{"object" => %{"tag" => tags}}}) do
+    if(Pleroma.Config.get([__MODULE__, :unfurl_nsfw], false) == false) do
+      Enum.any?(tags, fn tag -> tag == "nsfw" end)
+    else
+      false
+    end
+  end
 end
index a48788969431349cb341e7f27038831e51c9986a..2f27a5300b6ce6cb87a64483805618da08d2308b 100644 (file)
@@ -3,6 +3,7 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
   alias Pleroma.Web.Metadata.Providers.Provider
+  alias Pleroma.Web.Metadata
   alias Pleroma.{HTML, Formatter, User}
   alias Pleroma.Web.MediaProxy
 
@@ -32,7 +33,7 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
        ], []},
       {:meta, [property: "og:type", content: "website"], []}
     ] ++
-      if attachments == [] do
+      if attachments == [] or Metadata.activity_nsfw?(activity) do
         [
           {:meta, [property: "og:image", content: attachment_url(User.avatar_url(user))], []},
           {:meta, [property: "og:image:width", content: 150], []},
index 8537766112d804e68a6829783052dbc98b7af411..9a1245e5943b10d1de0dc03c0230a6d6364a6a07 100644 (file)
@@ -3,13 +3,13 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
   alias Pleroma.Web.Metadata.Providers.Provider
+  alias Pleroma.Web.Metadata
 
   @behaviour Provider
 
   @impl Provider
   def build_tags(%{activity: activity}) do
-    if Enum.any?(activity.data["object"]["tag"], fn tag -> tag == "nsfw" end) or
-         activity.data["object"]["attachment"] == [] do
+    if Metadata.activity_nsfw?(activity) or activity.data["object"]["attachment"] == [] do
       build_tags(nil)
     else
       case find_first_acceptable_media_type(activity) do