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
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
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)