summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMark Felder <feld@feld.me>2024-05-26 15:13:59 -0400
committerMark Felder <feld@feld.me>2024-05-26 15:14:48 -0400
commitd4769b076a95ce2281dba5673c410eb098445bba (patch)
tree1053362f3a17466d13740f88cc37ea1e609870f1 /lib
parent895eea5c752212cb36fb6c908456cdd2f72ad2b7 (diff)
downloadpleroma-d4769b076a95ce2281dba5673c410eb098445bba.tar.gz
pleroma-d4769b076a95ce2281dba5673c410eb098445bba.zip
Return a 422 when trying to reply to a deleted status
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/common_api/activity_draft.ex18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/pleroma/web/common_api/activity_draft.ex b/lib/pleroma/web/common_api/activity_draft.ex
index bc46a8a36..8aa1e258d 100644
--- a/lib/pleroma/web/common_api/activity_draft.ex
+++ b/lib/pleroma/web/common_api/activity_draft.ex
@@ -129,8 +129,22 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do
defp in_reply_to(%{params: %{in_reply_to_status_id: ""}} = draft), do: draft
- defp in_reply_to(%{params: %{in_reply_to_status_id: id}} = draft) when is_binary(id) do
- %__MODULE__{draft | in_reply_to: Activity.get_by_id(id)}
+ defp in_reply_to(%{params: %{in_reply_to_status_id: :deleted}} = draft) do
+ add_error(draft, dgettext("errors", "Cannot reply to a deleted status"))
+ end
+
+ defp in_reply_to(%{params: %{in_reply_to_status_id: id} = params} = draft) when is_binary(id) do
+ activity = Activity.get_by_id(id)
+
+ params =
+ if is_nil(activity) do
+ # Deleted activities are returned as nil
+ Map.put(params, :in_reply_to_status_id, :deleted)
+ else
+ Map.put(params, :in_reply_to_status_id, activity)
+ end
+
+ in_reply_to(%{draft | params: params})
end
defp in_reply_to(%{params: %{in_reply_to_status_id: %Activity{} = in_reply_to}} = draft) do