summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2024-05-27 11:41:46 +0000
committerlain <lain@soykaf.club>2024-05-27 11:41:46 +0000
commit6757382abec9ca47a9025b8bed61047414cee20f (patch)
treee5962ec88dc1846b376c3a8e97b185ce96948e51 /lib
parent5e4306012862417a05127aa89080857eed8461b8 (diff)
parentf214c2cdac4a94fae51e7679223df9557c6a1827 (diff)
downloadpleroma-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.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