Remove custom emojis and trailing whitespaces from previews
authorrinpatch <rinpatch@sdf.org>
Fri, 18 Jan 2019 07:28:19 +0000 (10:28 +0300)
committerrinpatch <rinpatch@sdf.org>
Fri, 18 Jan 2019 07:28:19 +0000 (10:28 +0300)
lib/pleroma/formatter.ex
lib/pleroma/web/common_api/common_api.ex
lib/pleroma/web/metadata/opengraph.ex

index 63e0acb21e29e5d923263cf797677058121ba44b..2696f41c00fa653f94559f198b84280f7b9872bf 100644 (file)
@@ -43,7 +43,7 @@ defmodule Pleroma.Formatter 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 @@ defmodule Pleroma.Formatter do
       String.replace(
         text,
         ":#{emoji}:",
-        "<img height='32px' width='32px' alt='#{emoji}' title='#{emoji}' src='#{
-          MediaProxy.url(file)
-        }' />"
+        if not strip do
+          "<img height='32px' width='32px' alt='#{emoji}' title='#{emoji}' src='#{
+            MediaProxy.url(file)
+          }' />"
+        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 @@ defmodule Pleroma.Formatter 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
index 2902905fd399c3c939aba11e49eb1dfc71f9b998..9a748d65e29fb1b413660852c84fe3149cb3be07 100644 (file)
@@ -103,7 +103,7 @@ defmodule Pleroma.Web.CommonAPI 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"],
index 43303859c8261e40029d30ce452ceeab26648b5f..1028e35c27f2e44b6234d093f4609b769971c404 100644 (file)
@@ -124,6 +124,7 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
     |> HtmlEntities.decode()
     |> String.replace(~r/<br\s?\/?>/, " ")
     |> HTML.get_cached_stripped_html_for_object(object, __MODULE__)
+    |> Formatter.demojify()
     |> Formatter.truncate()
   end
 
@@ -133,6 +134,7 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
     |> HtmlEntities.decode()
     |> String.replace(~r/<br\s?\/?>/, " ")
     |> HTML.strip_tags()
+    |> Formatter.demojify()
     |> Formatter.truncate()
   end