about summary refs log tree commit diff
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-03-31 00:49:24 +0200
committerGitHub <noreply@github.com>2022-03-31 00:49:24 +0200
commitef196c913c77338be5ebb1e02af2f6225f857080 (patch)
tree2640d4bb0fee2c0d62183a64b0b4d0857c75f0d6
parent8c7223f4eac80b5725485be742d3fa2c984f4670 (diff)
Fix error MethodError in Chewy::Strategy::Sidekiq::Worker (#17912)
Also refactor a bit to reduce code duplication.
-rw-r--r--app/chewy/statuses_index.rb2
-rw-r--r--app/helpers/formatting_helper.rb1
-rw-r--r--app/lib/feed_manager.rb11
-rw-r--r--app/models/status.rb9
4 files changed, 12 insertions, 11 deletions
diff --git a/app/chewy/statuses_index.rb b/app/chewy/statuses_index.rb
index bfd61a048..1381a96ed 100644
--- a/app/chewy/statuses_index.rb
+++ b/app/chewy/statuses_index.rb
@@ -59,7 +59,7 @@ class StatusesIndex < Chewy::Index
     field :id, type: 'long'
     field :account_id, type: 'long'
 
-    field :text, type: 'text', value: ->(status) { [status.spoiler_text, extract_status_plain_text(status)].concat(status.ordered_media_attachments.map(&:description)).concat(status.preloadable_poll ? status.preloadable_poll.options : []).join("\n\n") } do
+    field :text, type: 'text', value: ->(status) { status.searchable_text } do
       field :stemmed, type: 'text', analyzer: 'content'
     end
 
diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb
index e11156999..a58dd608f 100644
--- a/app/helpers/formatting_helper.rb
+++ b/app/helpers/formatting_helper.rb
@@ -12,6 +12,7 @@ module FormattingHelper
   def extract_status_plain_text(status)
     PlainTextFormatter.new(status.text, status.local?).to_s
   end
+  module_function :extract_status_plain_text
 
   def status_content_format(status)
     html_aware_format(status.text, status.local?, preloaded_accounts: [status.account] + (status.respond_to?(:active_mentions) ? status.active_mentions.map(&:account) : []))
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index 709450080..085f1b274 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -5,7 +5,6 @@ require 'singleton'
 class FeedManager
   include Singleton
   include Redisable
-  include FormattingHelper
 
   # Maximum number of items stored in a single feed
   MAX_ITEMS = 400
@@ -443,16 +442,8 @@ class FeedManager
     return false if active_filters.empty?
 
     combined_regex = Regexp.union(active_filters)
-    status         = status.reblog if status.reblog?
 
-    combined_text = [
-      extract_status_plain_text(status),
-      status.spoiler_text,
-      status.preloadable_poll ? status.preloadable_poll.options.join("\n\n") : nil,
-      status.ordered_media_attachments.map(&:description).join("\n\n"),
-    ].compact.join("\n\n")
-
-    combined_regex.match?(combined_text)
+    combined_regex.match?(status.proper.searchable_text)
   end
 
   # Adds a status to an account's feed, returning true if a status was
diff --git a/app/models/status.rb b/app/models/status.rb
index bf5a49b7f..a71451f50 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -155,6 +155,15 @@ class Status < ApplicationRecord
     ids.uniq
   end
 
+  def searchable_text
+    [
+      spoiler_text,
+      FormattingHelper.extract_status_plain_text(self),
+      preloadable_poll ? preloadable_poll.options.join("\n\n") : nil,
+      ordered_media_attachments.map(&:description).join("\n\n"),
+    ].compact.join("\n\n")
+  end
+
   def reply?
     !in_reply_to_id.nil? || attributes['reply']
   end