diff options
| -rw-r--r-- | lib/pleroma/web/activity_pub/builder.ex | 16 | ||||
| -rw-r--r-- | test/web/activity_pub/relay_test.exs | 1 | 
2 files changed, 12 insertions, 5 deletions
diff --git a/lib/pleroma/web/activity_pub/builder.ex b/lib/pleroma/web/activity_pub/builder.ex index 7ece764f5..51b74414a 100644 --- a/lib/pleroma/web/activity_pub/builder.ex +++ b/lib/pleroma/web/activity_pub/builder.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.Builder do    alias Pleroma.Object    alias Pleroma.User +  alias Pleroma.Web.ActivityPub.Relay    alias Pleroma.Web.ActivityPub.Utils    alias Pleroma.Web.ActivityPub.Visibility @@ -85,15 +86,20 @@ defmodule Pleroma.Web.ActivityPub.Builder do      end    end +  @spec announce(User.t(), Object.t(), keyword()) :: {:ok, map(), keyword()}    def announce(actor, object, options \\ []) do      public? = Keyword.get(options, :public, false) -    to = [actor.follower_address, object.data["actor"]]      to = -      if public? do -        [Pleroma.Constants.as_public() | to] -      else -        to +      cond do +        actor.ap_id == Relay.relay_ap_id() -> +          [actor.follower_address] + +        public? -> +          [actor.follower_address, object.data["actor"], Pleroma.Constants.as_public()] + +        true -> +          [actor.follower_address, object.data["actor"]]        end      {:ok, diff --git a/test/web/activity_pub/relay_test.exs b/test/web/activity_pub/relay_test.exs index dbee8a0f4..b3b573c9b 100644 --- a/test/web/activity_pub/relay_test.exs +++ b/test/web/activity_pub/relay_test.exs @@ -108,6 +108,7 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do        assert {:ok, %Activity{} = activity} = Relay.publish(note)        assert activity.data["type"] == "Announce"        assert activity.data["actor"] == service_actor.ap_id +      assert activity.data["to"] == [service_actor.follower_address]        assert called(Pleroma.Web.Federator.publish(activity))      end  | 
