aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/pleroma/activity.ex15
-rw-r--r--lib/pleroma/notification.ex10
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex3
-rw-r--r--test/activity_test.exs2
-rw-r--r--test/web/ostatus/incoming_documents/delete_handling_test.exs6
5 files changed, 22 insertions, 14 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
index 0845233ee..be04363aa 100644
--- a/lib/pleroma/activity.ex
+++ b/lib/pleroma/activity.ex
@@ -108,17 +108,20 @@ defmodule Pleroma.Activity do
%{
id: data["id"],
context: data["context"],
- type: "tombstone",
+ type: "Tombstone",
published: data["published"],
deleted: deleted
}
end
def swap_data_with_tombstone(activity) do
- tombstone = get_tombstone(activity)
-
- activity
- |> change(%{data: tombstone})
- |> Repo.update()
+ with tombstone = get_tombstone(activity),
+ Notification.clear(activity),
+ {:ok, changed_activity} =
+ activity
+ |> change(%{data: tombstone})
+ |> Repo.update() do
+ {:ok, changed_activity}
+ end
end
end
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex
index 47f6b6ee7..457cba935 100644
--- a/lib/pleroma/notification.ex
+++ b/lib/pleroma/notification.ex
@@ -75,10 +75,14 @@ defmodule Pleroma.Notification do
end
end
- def clear(user) do
- query = from(n in Notification, where: n.user_id == ^user.id)
+ def clear(%User{} = user) do
+ from(n in Notification, where: n.user_id == ^user.id)
+ |> Repo.delete_all()
+ end
- Repo.delete_all(query)
+ def clear(%Activity{} = activity) do
+ from(n in Notification, where: n.activity_id == ^activity.id)
+ |> Repo.delete_all()
end
def dismiss(%{id: user_id} = _user, id) do
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index e6af4b211..87514870d 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -586,7 +586,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
end
def set_reply_to_uri(%{"inReplyTo" => inReplyTo} = object) do
- with false <- String.starts_with?(inReplyTo, "http"),
+ with false <- is_nil(inReplyTo),
+ false <- String.starts_with?(inReplyTo, "http"),
{:ok, %{data: replied_to_object}} <- get_obj_helper(inReplyTo) do
Map.put(object, "inReplyTo", replied_to_object["external_url"] || inReplyTo)
else
diff --git a/test/activity_test.exs b/test/activity_test.exs
index c47fe39da..dd11323b5 100644
--- a/test/activity_test.exs
+++ b/test/activity_test.exs
@@ -31,7 +31,7 @@ defmodule Pleroma.ActivityTest do
deleted = DateTime.utc_now()
assert Pleroma.Activity.get_tombstone(activity, deleted) == %{
- id: activity.data["object"]["id"],
+ id: activity.data["id"],
context: activity.data["context"],
type: "Tombstone",
published: activity.data["published"],
diff --git a/test/web/ostatus/incoming_documents/delete_handling_test.exs b/test/web/ostatus/incoming_documents/delete_handling_test.exs
index 1e041e5b0..4e9c0f90f 100644
--- a/test/web/ostatus/incoming_documents/delete_handling_test.exs
+++ b/test/web/ostatus/incoming_documents/delete_handling_test.exs
@@ -23,9 +23,9 @@ defmodule Pleroma.Web.OStatus.DeleteHandlingTest do
{:ok, [delete]} = 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, note.id).data["type"] == "Tombstone"
+ assert Repo.get(Activity, like.id).data["type"] == "Tombstone"
+ assert Object.get_by_ap_id(note.data["object"]["id"]).data["type"] == "Tombstone"
assert Repo.get(Activity, second_note.id)
assert Object.get_by_ap_id(second_note.data["object"]["id"])