aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/activity.ex15
-rw-r--r--lib/pleroma/notification.ex10
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex3
3 files changed, 18 insertions, 10 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