Refactor audience to introduce maybe_add_followers/2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
parent
e6c05c481a
commit
099b85e9a9
@ -66,16 +66,20 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_audience(%Participant{} = participant) do
|
def get_audience(%Participant{} = participant) do
|
||||||
event = Events.get_event_with_preload!(participant.event_id)
|
%Event{} = event = Events.get_event_with_preload!(participant.event_id)
|
||||||
|
%Actor{} = organizer = group_or_organizer_event(event)
|
||||||
|
|
||||||
actor_participants_urls =
|
cc =
|
||||||
event.id
|
event.id
|
||||||
|> Mobilizon.Events.list_actors_participants_for_event()
|
|> Mobilizon.Events.list_actors_participants_for_event()
|
||||||
|> Enum.map(& &1.url)
|
|> Enum.map(& &1.url)
|
||||||
|
|> Enum.filter(&(&1 != participant.actor.url))
|
||||||
|
|> maybe_add_group_members(organizer)
|
||||||
|
|> maybe_add_followers(organizer)
|
||||||
|
|
||||||
%{
|
%{
|
||||||
"to" => [participant.actor.url, group_or_organizer_event(event).url],
|
"to" => [participant.actor.url, organizer.url],
|
||||||
"cc" => actor_participants_urls
|
"cc" => cc
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -156,6 +160,13 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do
|
|||||||
|
|
||||||
defp maybe_add_group_members(collection, %Actor{type: _}), do: collection
|
defp maybe_add_group_members(collection, %Actor{type: _}), do: collection
|
||||||
|
|
||||||
|
@spec maybe_add_followers(List.t(), Actor.t()) :: List.t()
|
||||||
|
defp maybe_add_followers(collection, %Actor{type: :Group, followers_url: followers_url}) do
|
||||||
|
[followers_url | collection]
|
||||||
|
end
|
||||||
|
|
||||||
|
defp maybe_add_followers(collection, %Actor{type: _}), do: collection
|
||||||
|
|
||||||
def get_addressed_actors(mentioned_users, _), do: mentioned_users
|
def get_addressed_actors(mentioned_users, _), do: mentioned_users
|
||||||
|
|
||||||
defp add_in_reply_to(%Comment{actor: %Actor{url: url}} = _comment), do: [url]
|
defp add_in_reply_to(%Comment{actor: %Actor{url: url}} = _comment), do: [url]
|
||||||
|
@ -257,7 +257,7 @@ defmodule Mobilizon.Federation.ActivityPub.AudienceTest do
|
|||||||
|
|
||||||
assert %{
|
assert %{
|
||||||
"to" => [participant.actor.url, participant.event.organizer_actor.url],
|
"to" => [participant.actor.url, participant.event.organizer_actor.url],
|
||||||
"cc" => [participant2.actor.url, participant.actor.url]
|
"cc" => [participant2.actor.url]
|
||||||
} == Audience.get_audience(participant)
|
} == Audience.get_audience(participant)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -271,7 +271,7 @@ defmodule Mobilizon.Federation.ActivityPub.AudienceTest do
|
|||||||
|
|
||||||
assert %{
|
assert %{
|
||||||
"to" => [participant.actor.url, participant.event.attributed_to.url],
|
"to" => [participant.actor.url, participant.event.attributed_to.url],
|
||||||
"cc" => [participant2.actor.url, participant.actor.url]
|
"cc" => [group.followers_url, group.members_url, participant2.actor.url]
|
||||||
} == Audience.get_audience(participant)
|
} == Audience.get_audience(participant)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user