diff options
author | Mark Felder <feld@feld.me> | 2024-05-26 15:13:59 -0400 |
---|---|---|
committer | Mark Felder <feld@feld.me> | 2024-05-26 15:14:48 -0400 |
commit | d4769b076a95ce2281dba5673c410eb098445bba (patch) | |
tree | 1053362f3a17466d13740f88cc37ea1e609870f1 /lib | |
parent | 895eea5c752212cb36fb6c908456cdd2f72ad2b7 (diff) | |
download | pleroma-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.ex | 18 |
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 |