diff options
author | Mark Felder <feld@feld.me> | 2024-07-06 16:56:49 -0400 |
---|---|---|
committer | Mark Felder <feld@feld.me> | 2024-07-06 17:02:33 -0400 |
commit | 272aae157eee8628b830cc1818f39c8fa8884e23 (patch) | |
tree | fd67277c24c58afa6fa0e755e64c6211c33672b1 /lib | |
parent | 9e3633501bca98a9df34ed3231e55ed038dd86b7 (diff) | |
download | pleroma-272aae157eee8628b830cc1818f39c8fa8884e23.tar.gz pleroma-272aae157eee8628b830cc1818f39c8fa8884e23.zip |
Refactor maybe_handle_group_posts/1
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/utils.ex | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 797e79dda..6c792804d 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -939,26 +939,14 @@ defmodule Pleroma.Web.ActivityPub.Utils do |> Repo.all() 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 poster = User.get_cached_by_ap_id(activity.actor) - mentions = - activity.data["to"] - |> Enum.filter(&(&1 != activity.actor)) - - 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 + User.get_recipients_from_activity(activity) + |> Enum.filter(&match?("Group", &1.actor_type)) + |> Enum.reject(&User.blocks?(&1, poster)) + |> Enum.each(&Pleroma.Web.CommonAPI.repeat(activity.id, &1)) end end |