aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex21
1 files changed, 14 insertions, 7 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index 18e7a5ce3..a16699c93 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -61,8 +61,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
{recipients, to, cc}
end
- defp get_recipient_users(recipients),
- do: Enum.filter(recipients, fn recipient -> !is_nil(User.get_cached_by_ap_id(recipient)) end)
+ defp get_recipient_users(recipients, actor),
+ do:
+ Enum.filter(recipients, fn recipient ->
+ actor != recipient && !is_nil(User.get_cached_by_ap_id(recipient))
+ end)
defp check_actor_is_active(actor) do
if not is_nil(actor) do
@@ -129,7 +132,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
{_, true} <- {:remote_limit_error, check_remote_limit(map)},
{:ok, map} <- MRF.filter(map),
{recipients, _, _} = get_recipients(map),
- recipient_users <- get_recipient_users(recipients),
+ recipient_users <- get_recipient_users(recipients, map["actor"]),
{:fake, false, map, recipients} <- {:fake, fake, map, recipients},
:ok <- Containment.contain_child(map),
{:ok, map, object} <- insert_full_object(map) do
@@ -718,12 +721,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
[activity, object] in query,
where:
fragment(
- "? && ? and (?->>'inReplyTo' is null or ? <@ ?)",
+ "? && ? and (?->>'inReplyTo' is null or ? && ? or ? = ?)",
^recipients,
activity.recipients,
object.data,
activity.recipient_users,
- ^reply_recipients
+ ^reply_recipients,
+ activity.actor,
+ ^user.ap_id
)
)
end
@@ -739,14 +744,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
[activity, object] in query,
where:
fragment(
- "? && ? and (?->>'inReplyTo' is null or ? && ? or ? <@ ?)",
+ "? && ? and (?->>'inReplyTo' is null or ? && ? or ? && ? or ? = ?)",
^recipients,
activity.recipients,
object.data,
activity.recipients,
^public_recipients,
activity.recipient_users,
- ^reply_recipients
+ ^reply_recipients,
+ activity.actor,
+ ^user.ap_id
)
)
end