Skip to content
Snippets Groups Projects
Commit 552cfdbe authored by lain's avatar lain
Browse files

Fix deletion not deleting relevant actions.

parent 2ab1d915
Branches
Tags
No related merge requests found
......@@ -15,11 +15,17 @@ defmodule Pleroma.Activity do
where: fragment("(?)->>'id' = ?", activity.data, ^to_string(ap_id)))
end
# Wrong name, only returns create activities
def all_by_object_ap_id_q(ap_id) do
from activity in Activity,
where: fragment("(?)->'object'->>'id' = ?", activity.data, ^to_string(ap_id))
end
def all_non_create_by_object_ap_id_q(ap_id) do
from activity in Activity,
where: fragment("(?)->>'object' = ?", activity.data, ^to_string(ap_id))
end
def all_by_object_ap_id(ap_id) do
Repo.all(all_by_object_ap_id_q(ap_id))
end
......
......@@ -7,6 +7,7 @@ defmodule Pleroma.Web.OStatus.DeleteHandler do
with id <- XML.string_from_xpath("//id", entry),
object when not is_nil(object) <- Object.get_by_ap_id(id) 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))
nil
end
......
......@@ -9,12 +9,17 @@ defmodule Pleroma.Web.OStatus.DeleteHandlingTest do
test "it removes the mentioned activity" do
note = insert(:note_activity)
second_note = insert(:note_activity)
user = insert(:user)
object = Object.get_by_ap_id(note.data["object"]["id"])
{:ok, like, object} = Pleroma.Web.ActivityPub.ActivityPub.like(user, object)
incoming = File.read!("test/fixtures/delete.xml")
|> String.replace("tag:mastodon.sdf.org,2017-06-10:objectId=310513:objectType=Status", note.data["object"]["id"])
{:ok, []} = OStatus.handle_incoming(incoming)
refute Repo.get(Activity, note.id)
refute Repo.get(Activity, like.id)
refute Object.get_by_ap_id(note.data["object"]["id"])
assert Repo.get(Activity, second_note.id)
assert Object.get_by_ap_id(second_note.data["object"]["id"])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment