Merge branch 'bugfix/delete-activity-audience' into 'develop'

expand the audience of delete activities to all recipients of the deleted object

Closes #682

See merge request pleroma/pleroma!891
This commit is contained in:
rinpatch 2019-03-07 11:31:08 +00:00
commit 992145e64c
2 changed files with 23 additions and 1 deletions

View file

@ -309,12 +309,13 @@ def unfollow(follower, followed, activity_id \\ nil, local \\ true) do
def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ true) do def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ true) do
user = User.get_cached_by_ap_id(actor) user = User.get_cached_by_ap_id(actor)
to = object.data["to"] || [] ++ object.data["cc"] || []
data = %{ data = %{
"type" => "Delete", "type" => "Delete",
"actor" => actor, "actor" => actor,
"object" => id, "object" => id,
"to" => [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"] "to" => to
} }
with {:ok, _} <- Object.delete(object), with {:ok, _} <- Object.delete(object),

View file

@ -691,6 +691,27 @@ test "decrements user note count only for public activities" do
user = Repo.get(User, user.id) user = Repo.get(User, user.id)
assert user.info.note_count == 10 assert user.info.note_count == 10
end end
test "it creates a delete activity and checks that it is also sent to users mentioned by the deleted object" do
user = insert(:user)
note = insert(:note_activity)
{:ok, object} =
Object.get_by_ap_id(note.data["object"]["id"])
|> Object.change(%{
data: %{
"actor" => note.data["object"]["actor"],
"id" => note.data["object"]["id"],
"to" => [user.ap_id],
"type" => "Note"
}
})
|> Object.update_and_set_cache()
{:ok, delete} = ActivityPub.delete(object)
assert user.ap_id in delete.data["to"]
end
end end
describe "timeline post-processing" do describe "timeline post-processing" do