diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex
index 63e0acb21..2696f41c0 100644
--- a/lib/pleroma/formatter.ex
+++ b/lib/pleroma/formatter.ex
@@ -43,7 +43,7 @@ def emojify(text) do
def emojify(text, nil), do: text
- def emojify(text, emoji) do
+ def emojify(text, emoji, strip \\ false) do
Enum.reduce(emoji, text, fn {emoji, file}, text ->
emoji = HTML.strip_tags(emoji)
file = HTML.strip_tags(file)
@@ -51,14 +51,24 @@ def emojify(text, emoji) do
String.replace(
text,
":#{emoji}:",
- ""
+ if not strip do
+ ""
+ else
+ ""
+ end
)
|> HTML.filter_tags()
end)
end
+ def demojify(text) do
+ emojify(text, Emoji.get_all(), true)
+ end
+
+ def demojify(text, nil), do: text
+
def get_emoji(text) when is_binary(text) do
Enum.filter(Emoji.get_all(), fn {emoji, _} -> String.contains?(text, ":#{emoji}:") end)
end
@@ -185,6 +195,9 @@ def finalize({subs, text}) do
end
def truncate(text, max_length \\ 200, omission \\ "...") do
+ # Remove trailing whitespace
+ text = Regex.replace(~r/([^ \t\r\n])([ \t]+$)/u, text, "\\g{1}")
+
if String.length(text) < max_length do
text
else
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex
index 2902905fd..9a748d65e 100644
--- a/lib/pleroma/web/common_api/common_api.ex
+++ b/lib/pleroma/web/common_api/common_api.ex
@@ -103,7 +103,7 @@ def post(user, %{"status" => status} = data) do
attachments,
tags,
get_content_type(data["content_type"]),
- Enum.member?([true, "true"], data["no_attachment_links"])
+ true
),
context <- make_context(inReplyTo),
cw <- data["spoiler_text"],
diff --git a/lib/pleroma/web/metadata/opengraph.ex b/lib/pleroma/web/metadata/opengraph.ex
index 43303859c..1028e35c2 100644
--- a/lib/pleroma/web/metadata/opengraph.ex
+++ b/lib/pleroma/web/metadata/opengraph.ex
@@ -124,6 +124,7 @@ defp scrub_html_and_truncate(%{data: %{"content" => content}} = object) do
|> HtmlEntities.decode()
|> String.replace(~r/
/, " ")
|> HTML.get_cached_stripped_html_for_object(object, __MODULE__)
+ |> Formatter.demojify()
|> Formatter.truncate()
end
@@ -133,6 +134,7 @@ defp scrub_html_and_truncate(content) when is_binary(content) do
|> HtmlEntities.decode()
|> String.replace(~r/
/, " ")
|> HTML.strip_tags()
+ |> Formatter.demojify()
|> Formatter.truncate()
end