diff options
author | kaniini <nenolod@gmail.com> | 2019-03-04 15:59:57 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2019-03-04 15:59:57 +0000 |
commit | ca5d894e6811e0020facabdaa12d2fd263b497c5 (patch) | |
tree | 060a64e7d705d536f0815d81a3ef056ac0465e1d /lib | |
parent | 10248d86a2ca333de8a44e28ab0b8cee70b5d5dd (diff) | |
parent | 33c614bce002ff27cedbe3969f587c800744b997 (diff) | |
download | pleroma-ca5d894e6811e0020facabdaa12d2fd263b497c5.tar.gz |
Merge branch 'fix/like-adressing' into 'develop'
Stop adresssing like activities to actor's follower collection on non-public posts
See merge request pleroma/pleroma!896
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/utils.ex | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 88f4779c8..9e50789db 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do alias Pleroma.Web alias Pleroma.Object alias Pleroma.Activity + alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.User alias Pleroma.Notification alias Pleroma.Web.Router.Helpers @@ -274,13 +275,31 @@ defmodule Pleroma.Web.ActivityPub.Utils do Repo.all(query) end - def make_like_data(%User{ap_id: ap_id} = actor, %{data: %{"id" => id}} = object, activity_id) do + def make_like_data( + %User{ap_id: ap_id} = actor, + %{data: %{"actor" => object_actor_id, "id" => id}} = object, + activity_id + ) do + object_actor = User.get_cached_by_ap_id(object_actor_id) + + to = + if Visibility.is_public?(object) do + [actor.follower_address, object.data["actor"]] + else + [object.data["actor"]] + end + + cc = + (object.data["to"] ++ (object.data["cc"] || [])) + |> List.delete(actor.ap_id) + |> List.delete(object_actor.follower_address) + data = %{ "type" => "Like", "actor" => ap_id, "object" => id, - "to" => [actor.follower_address, object.data["actor"]], - "cc" => ["https://www.w3.org/ns/activitystreams#Public"], + "to" => to, + "cc" => cc, "context" => object.data["context"] } |