Refactor maybe_handle_group_posts/1

This commit is contained in:
Mark Felder 2024-07-06 16:56:49 -04:00
parent 9e3633501b
commit 272aae157e
2 changed files with 7 additions and 18 deletions

View File

@ -0,0 +1 @@
Deactivated groups would still try to repeat a post.

View File

@ -939,26 +939,14 @@ defmodule Pleroma.Web.ActivityPub.Utils do
|> Repo.all() |> Repo.all()
end end
@spec maybe_handle_group_posts(Activity.t()) :: :ok
@doc "Automatically repeats posts for local group actor recipients"
def maybe_handle_group_posts(activity) do def maybe_handle_group_posts(activity) do
poster = User.get_cached_by_ap_id(activity.actor) poster = User.get_cached_by_ap_id(activity.actor)
mentions = User.get_recipients_from_activity(activity)
activity.data["to"] |> Enum.filter(&match?("Group", &1.actor_type))
|> Enum.filter(&(&1 != activity.actor)) |> Enum.reject(&User.blocks?(&1, poster))
|> Enum.each(&Pleroma.Web.CommonAPI.repeat(activity.id, &1))
mentioned_local_groups =
User.get_all_by_ap_id(mentions)
|> Enum.filter(fn user ->
user.actor_type == "Group" and
user.local and
not User.blocks?(user, poster)
end)
mentioned_local_groups
|> Enum.each(fn group ->
Pleroma.Web.CommonAPI.repeat(activity.id, group)
end)
:ok
end end
end end