diff options
author | lain <lain@soykaf.club> | 2024-05-27 11:41:46 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2024-05-27 11:41:46 +0000 |
commit | 6757382abec9ca47a9025b8bed61047414cee20f (patch) | |
tree | e5962ec88dc1846b376c3a8e97b185ce96948e51 /lib | |
parent | 5e4306012862417a05127aa89080857eed8461b8 (diff) | |
parent | f214c2cdac4a94fae51e7679223df9557c6a1827 (diff) | |
download | pleroma-6757382abec9ca47a9025b8bed61047414cee20f.tar.gz pleroma-6757382abec9ca47a9025b8bed61047414cee20f.zip |
Merge branch 'reject-replies-to-deleted' into 'develop'
Return a 422 when trying to reply to a deleted status
See merge request pleroma/pleroma!4122
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 |