activitypub: publisher: fixups
[akkoma] / lib / pleroma / web / activity_pub / publisher.ex
index ee9f0fdd304b4d7b6a7f7c7dd9bcfb1bfc882ba6..5d72299a51ab5320db186c65157f25fae178fbf0 100644 (file)
@@ -4,8 +4,10 @@
 
 defmodule Pleroma.Web.ActivityPub.Publisher do
   alias Pleroma.Activity
+  alias Pleroma.Config
   alias Pleroma.Instances
   alias Pleroma.User
+  alias Pleroma.Web.ActivityPub.Relay
   alias Pleroma.Web.ActivityPub.Transmogrifier
 
   import Pleroma.Web.ActivityPub.Visibility
@@ -24,10 +26,11 @@ defmodule Pleroma.Web.ActivityPub.Publisher do
   Determine if an activity can be represented by running it through Transmogrifier.
   """
   def is_representable?(%Activity{} = activity) do
-    with %{} = _data <- Transmogrifier.prepare_outgoing(activity.data) do
+    with {:ok, _data} <- Transmogrifier.prepare_outgoing(activity.data) do
       true
     else
-      _e -> false
+      _e ->
+        false
     end
   end
 
@@ -104,6 +107,11 @@ defmodule Pleroma.Web.ActivityPub.Publisher do
 
     public = is_public?(activity)
 
+    if public && Config.get([:instance, :allow_relay]) do
+      Logger.info(fn -> "Relaying #{activity.data["id"]} out" end)
+      Relay.publish(activity)
+    end
+
     {:ok, data} = Transmogrifier.prepare_outgoing(activity.data)
     json = Jason.encode!(data)