From 34a62ff4239efb2193e78491e0d58894b159bd00 Mon Sep 17 00:00:00 2001
From: Eugen Rochko <eugen@zeonfederated.com>
Date: Mon, 31 Aug 2020 17:22:04 +0200
Subject: [PATCH] Fix account search showing results from domains hidden by
 user

Fix #8586
---
 app/services/account_search_service.rb | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb
index 43e59604055..731c003c462 100644
--- a/app/services/account_search_service.rb
+++ b/app/services/account_search_service.rb
@@ -46,9 +46,19 @@ class AccountSearchService < BaseService
     return [] if limit_for_non_exact_results.zero?
 
     @search_results ||= begin
-      results = from_elasticsearch if Chewy.enabled?
+      results   = from_elasticsearch if Chewy.enabled?
       results ||= from_database
-      results
+      results.reject { |result| excluded_domains.include?(result.domain) }
+    end
+  end
+
+  def excluded_domains
+    @excluded_domains ||= begin
+      if account
+        Set.new(account.excluded_from_timeline_domains)
+      else
+        Set.new
+      end
     end
   end
 
@@ -69,8 +79,8 @@ class AccountSearchService < BaseService
   end
 
   def from_elasticsearch
-    must_clauses   = [{ multi_match: { query: terms_for_query, fields: likely_acct? ? %w(acct.edge_ngram acct) : %w(acct.edge_ngram acct display_name.edge_ngram display_name), type: 'most_fields', operator: 'and' } }]
-    should_clauses = []
+    must_clauses     = [{ multi_match: { query: terms_for_query, fields: likely_acct? ? %w(acct.edge_ngram acct) : %w(acct.edge_ngram acct display_name.edge_ngram display_name), type: 'most_fields', operator: 'and' } }]
+    should_clauses   = []
 
     if account
       return [] if options[:following] && following_ids.empty?
-- 
GitLab