X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpleroma%2Fhtml.ex;h=726c370ad7a66ba34f7089b51ba82001c2bad265;hb=a0c755cc4ac3af7ddb7e8fe91fcfc1bae9750e9b;hp=2c701adb528dc7c492faae60dd9a4f94e14c5017;hpb=f5535e5743f755c66dcf92a8d4d2c06520cb72c8;p=akkoma diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index 2c701adb5..726c370ad 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -28,11 +28,18 @@ defmodule Pleroma.HTML do def filter_tags(html), do: filter_tags(html, nil) def strip_tags(html), do: Scrubber.scrub(html, Scrubber.StripTags) - def get_cached_scrubbed_html_for_activity(content, scrubbers, activity, key \\ "") do + def get_cached_scrubbed_html_for_activity( + content, + scrubbers, + activity, + key \\ "", + callback \\ fn x -> x end + ) do key = "#{key}#{generate_scrubber_signature(scrubbers)}|#{activity.id}" Cachex.fetch!(:scrubber_cache, key, fn _key -> - ensure_scrubbed_html(content, scrubbers, activity.data["object"]["fake"] || false) + object = Pleroma.Object.normalize(activity) + ensure_scrubbed_html(content, scrubbers, object.data["fake"] || false, callback) end) end @@ -41,24 +48,27 @@ defmodule Pleroma.HTML do content, HtmlSanitizeEx.Scrubber.StripTags, activity, - key + key, + &HtmlEntities.decode/1 ) end def ensure_scrubbed_html( content, scrubbers, - false = _fake - ) do - {:commit, filter_tags(content, scrubbers)} - end - - def ensure_scrubbed_html( - content, - scrubbers, - true = _fake + fake, + callback ) do - {:ignore, filter_tags(content, scrubbers)} + content = + content + |> filter_tags(scrubbers) + |> callback.() + + if fake do + {:ignore, content} + else + {:commit, content} + end end defp generate_scrubber_signature(scrubber) when is_atom(scrubber) do