aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-05-30 12:30:31 +0200
committerlain <lain@soykaf.club>2020-05-30 12:30:31 +0200
commit8bdf18d7c10f0e740b2f5e0fa5063c522b8b3872 (patch)
tree4d33c221c91a6df4d451ebaa0291319959806f73
parent2c9465cc51160546ae054d1a1912fbb8e9add8e8 (diff)
downloadpleroma-8bdf18d7c10f0e740b2f5e0fa5063c522b8b3872.tar.gz
CommonAPI: Linkify chat messages.
-rw-r--r--lib/pleroma/web/common_api/common_api.ex7
-rw-r--r--test/web/common_api/common_api_test.exs23
2 files changed, 29 insertions, 1 deletions
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex
index 764fa4f4f..173353aa5 100644
--- a/lib/pleroma/web/common_api/common_api.ex
+++ b/lib/pleroma/web/common_api/common_api.ex
@@ -50,7 +50,12 @@ defmodule Pleroma.Web.CommonAPI do
defp format_chat_content(nil), do: nil
defp format_chat_content(content) do
- content |> Formatter.html_escape("text/plain")
+ {text, _, _} =
+ content
+ |> Formatter.html_escape("text/plain")
+ |> Formatter.linkify()
+
+ text
end
defp validate_chat_content_length(_, true), do: :ok
diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs
index 9e129e5a7..41c6909de 100644
--- a/test/web/common_api/common_api_test.exs
+++ b/test/web/common_api/common_api_test.exs
@@ -50,6 +50,29 @@ defmodule Pleroma.Web.CommonAPITest do
assert activity
end
+ test "it linkifies" do
+ author = insert(:user)
+ recipient = insert(:user)
+
+ other_user = insert(:user)
+
+ {:ok, activity} =
+ CommonAPI.post_chat_message(
+ author,
+ recipient,
+ "https://example.org is the site of @#{other_user.nickname} #2hu"
+ )
+
+ assert other_user.ap_id not in activity.recipients
+
+ object = Object.normalize(activity, false)
+
+ assert object.data["content"] ==
+ "<a href=\"https://example.org\" rel=\"ugc\">https://example.org</a> is the site of <span class=\"h-card\"><a class=\"u-url mention\" data-user=\"#{
+ other_user.id
+ }\" href=\"#{other_user.ap_id}\" rel=\"ugc\">@<span>#{other_user.nickname}</span></a></span> <a class=\"hashtag\" data-tag=\"2hu\" href=\"http://localhost:4001/tag/2hu\">#2hu</a>"
+ end
+
test "it posts a chat message" do
author = insert(:user)
recipient = insert(:user)