diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 146888c98..db1302738 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -83,11 +83,11 @@ def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ tru "object" => id, "to" => [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"] } - with {:ok, activity} <- insert(data, local), + with Repo.delete(object), + Repo.delete_all(Activity.all_non_create_by_object_ap_id_q(id)), + Repo.delete_all(Activity.all_by_object_ap_id_q(id)), + {:ok, activity} <- insert(data, local), :ok <- maybe_federate(activity) do - Repo.delete(object) - Repo.delete_all(Activity.all_non_create_by_object_ap_id_q(id)) - Repo.delete_all(Activity.all_by_object_ap_id_q(id)) {:ok, activity} end end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 4388215f8..a088e97be 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -256,6 +256,8 @@ test "it creates a delete activity and deletes the original object" do assert delete.data["actor"] == note.data["actor"] assert delete.data["object"] == note.data["object"]["id"] + assert Repo.get(Activity, delete.id) != nil + assert Repo.get(Object, object.id) == nil end end