aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/common_api
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-05-13 15:31:28 +0200
committerlain <lain@soykaf.club>2020-05-13 15:31:28 +0200
commit0f0acc740d30c47d093f27875d4decf0693b2845 (patch)
tree0cdc813d983f535898c515d4a87a503bb7d3acd1 /lib/pleroma/web/common_api
parent06cad239e50cada3aec4fc3b4c494a70d328672c (diff)
downloadpleroma-0f0acc740d30c47d093f27875d4decf0693b2845.tar.gz
Chat: Allow posting without content if an attachment is present.
Diffstat (limited to 'lib/pleroma/web/common_api')
-rw-r--r--lib/pleroma/web/common_api/common_api.ex17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex
index 664175a4f..7008cea44 100644
--- a/lib/pleroma/web/common_api/common_api.ex
+++ b/lib/pleroma/web/common_api/common_api.ex
@@ -26,14 +26,14 @@ defmodule Pleroma.Web.CommonAPI do
require Logger
def post_chat_message(%User{} = user, %User{} = recipient, content, opts \\ []) do
- with :ok <- validate_chat_content_length(content),
- maybe_attachment <- opts[:media_id] && Object.get_by_id(opts[:media_id]),
+ with maybe_attachment <- opts[:media_id] && Object.get_by_id(opts[:media_id]),
+ :ok <- validate_chat_content_length(content, !!maybe_attachment),
{_, {:ok, chat_message_data, _meta}} <-
{:build_object,
Builder.chat_message(
user,
recipient.ap_id,
- content |> Formatter.html_escape("text/plain"),
+ content |> format_chat_content,
attachment: maybe_attachment
)},
{_, {:ok, create_activity_data, _meta}} <-
@@ -47,7 +47,16 @@ defmodule Pleroma.Web.CommonAPI do
end
end
- defp validate_chat_content_length(content) do
+ defp format_chat_content(nil), do: nil
+
+ defp format_chat_content(content) do
+ content |> Formatter.html_escape("text/plain")
+ end
+
+ defp validate_chat_content_length(_, true), do: :ok
+ defp validate_chat_content_length(nil, false), do: {:error, :no_content}
+
+ defp validate_chat_content_length(content, _) do
if String.length(content) <= Pleroma.Config.get([:instance, :chat_limit]) do
:ok
else