Refactor maybe_handle_group_posts/1
This commit is contained in:
parent
9e3633501b
commit
272aae157e
1
changelog.d/group-repeats.fix
Normal file
1
changelog.d/group-repeats.fix
Normal file
@ -0,0 +1 @@
|
|||||||
|
Deactivated groups would still try to repeat a post.
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user