From c66403b2579587d8c1448be3ad30dc388d5f29c3 Mon Sep 17 00:00:00 2001 From: Ben Lubar Date: Mon, 8 Jun 2020 17:11:42 -0500 Subject: FIX: filters ignore media descriptions (#13837) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * FIX: filters ignore media descriptions * remove parentheses to make codeclimate happy * combine the text and run the regular expression only once. https://github.com/tootsuite/mastodon/pull/13837#discussion_r431752581 * Fix use of “filter” instead of “compact”, fix coding style issues Co-authored-by: Thibaut Girka --- app/javascript/mastodon/actions/importer/normalizer.js | 2 +- app/lib/feed_manager.rb | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/actions/importer/normalizer.js b/app/javascript/mastodon/actions/importer/normalizer.js index f7cbe4c1c..dca44917a 100644 --- a/app/javascript/mastodon/actions/importer/normalizer.js +++ b/app/javascript/mastodon/actions/importer/normalizer.js @@ -12,7 +12,7 @@ const makeEmojiMap = record => record.emojis.reduce((obj, emoji) => { export function searchTextFromRawStatus (status) { const spoilerText = status.spoiler_text || ''; - const searchContent = ([spoilerText, status.content].concat((status.poll && status.poll.options) ? status.poll.options.map(option => option.title) : [])).join('\n\n').replace(//g, '\n').replace(/<\/p>

/g, '\n\n'); + const searchContent = ([spoilerText, status.content].concat((status.poll && status.poll.options) ? status.poll.options.map(option => option.title) : [])).concat(status.media_attachments.map(att => att.description)).join('\n\n').replace(//g, '\n').replace(/<\/p>

/g, '\n\n'); return domParser.parseFromString(searchContent, 'text/html').documentElement.textContent; } diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 13b7aafdf..94872d050 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -246,9 +246,14 @@ class FeedManager combined_regex = active_filters.reduce { |memo, obj| Regexp.union(memo, obj) } status = status.reblog if status.reblog? - !combined_regex.match(Formatter.instance.plaintext(status)).nil? || - (status.spoiler_text.present? && !combined_regex.match(status.spoiler_text).nil?) || - (status.preloadable_poll && !combined_regex.match(status.preloadable_poll.options.join("\n\n")).nil?) + combined_text = [ + Formatter.instance.plaintext(status), + status.spoiler_text, + status.preloadable_poll ? status.preloadable_poll.options.join("\n\n") : nil, + status.media_attachments.map(&:description).join("\n\n"), + ].compact.join("\n\n") + + !combined_regex.match(combined_text).nil? end # Adds a status to an account's feed, returning true if a status was -- cgit