diff options
author | Mark Felder <feld@feld.me> | 2021-06-11 15:35:38 -0500 |
---|---|---|
committer | Mark Felder <feld@feld.me> | 2021-06-11 15:35:38 -0500 |
commit | 07064f73bcf9091774a72650a5cc9cb973810bd2 (patch) | |
tree | 6a3d7a64562992b96afbf816f516686018dc6306 | |
parent | baf7fd2142a28ff2219c6be8906861490a9f0753 (diff) | |
download | pleroma-07064f73bcf9091774a72650a5cc9cb973810bd2.tar.gz |
Do not rely on cached stripped content. We need the control to preserve the breaks.
-rw-r--r-- | lib/pleroma/web/metadata/utils.ex | 8 | ||||
-rw-r--r-- | test/pleroma/web/metadata/utils_test.exs | 19 |
2 files changed, 21 insertions, 6 deletions
diff --git a/lib/pleroma/web/metadata/utils.ex b/lib/pleroma/web/metadata/utils.ex index a519fbf01..649319db5 100644 --- a/lib/pleroma/web/metadata/utils.ex +++ b/lib/pleroma/web/metadata/utils.ex @@ -3,19 +3,17 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Metadata.Utils do - alias Pleroma.Activity alias Pleroma.Emoji alias Pleroma.Formatter alias Pleroma.HTML - def scrub_html_and_truncate(%{data: %{"content" => content}} = object) do + def scrub_html_and_truncate(%{data: %{"content" => content}} = _object) do content # html content comes from DB already encoded, decode first and scrub after - |> HtmlEntities.decode() - |> String.replace(~r/<br\s?\/?>/, " ") - |> Activity.HTML.get_cached_stripped_html_for_activity(object, "metadata") |> Emoji.Formatter.demojify() + |> HTML.filter_tags(Pleroma.HTML.Scrubber.BreaksOnly) |> HtmlEntities.decode() + |> String.replace(~r/<br\s?\/?>/, " ") |> Formatter.truncate() end diff --git a/test/pleroma/web/metadata/utils_test.exs b/test/pleroma/web/metadata/utils_test.exs index b5d3e3566..c5d241886 100644 --- a/test/pleroma/web/metadata/utils_test.exs +++ b/test/pleroma/web/metadata/utils_test.exs @@ -23,6 +23,22 @@ defmodule Pleroma.Web.Metadata.UtilsTest do assert Utils.scrub_html_and_truncate(note) == "Pleroma's really cool!" end + test "it replaces <br> with compatible HTML entity (objects)" do + user = insert(:user) + + note = + insert(:note, %{ + data: %{ + "actor" => user.ap_id, + "id" => "https://pleroma.gov/objects/whatever", + "content" => "First line<br>Second line" + } + }) + + assert Utils.scrub_html_and_truncate(note) == + "First line Second line" + end + test "it returns text without encode HTML (binaries)" do assert Utils.scrub_html_and_truncate("Pleroma's really cool!") == "Pleroma's really cool!" end @@ -44,7 +60,8 @@ defmodule Pleroma.Web.Metadata.UtilsTest do end test "it strips HTML tags and other entities (binaries)" do - assert Utils.scrub_html_and_truncate("<title>my title</title> <p>and a paragraph!</p>") == "my title and a paragraph!" + assert Utils.scrub_html_and_truncate("<title>my title</title> <p>and a paragraph!</p>") == + "my title and a paragraph!" end end end |