Fix sending group events to followers on Mastodon

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2021-11-19 17:56:48 +01:00
parent d7fd30f8e6
commit 08f35169d1
No known key found for this signature in database
GPG key ID: A061B9DDE0CA0773
2 changed files with 8 additions and 5 deletions

View file

@ -458,10 +458,8 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
Logger.debug("Making announce data for a group private object") Logger.debug("Making announce data for a group private object")
to = to =
(object["to"] || []) Map.get(object, "to", []) ++
|> MapSet.new() Map.get(object, "cc", []) ++ [actor.followers_url, actor.members_url]
|> MapSet.intersection(MapSet.new([actor.followers_url, actor.members_url]))
|> MapSet.to_list()
{to, []} {to, []}
else else
@ -478,6 +476,11 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
"cc" => cc "cc" => cc
} }
data =
if object["attributedTo"],
do: Map.put(data, "attributedTo", object["attributedTo"]),
else: data
if activity_id, do: Map.put(data, "id", activity_id), else: data if activity_id, do: Map.put(data, "id", activity_id), else: data
end end

View file

@ -107,7 +107,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Event do
def model_to_as(%EventModel{} = event) do def model_to_as(%EventModel{} = event) do
{to, cc} = {to, cc} =
if event.visibility == :public, if event.visibility == :public,
do: {[@ap_public], []}, do: {[@ap_public], [event.organizer_actor.followers_url]},
else: {[attributed_to_or_default(event).followers_url], [@ap_public]} else: {[attributed_to_or_default(event).followers_url], [@ap_public]}
%{ %{