about summary refs log tree commit diff
path: root/app/services/hashtag_query_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/hashtag_query_service.rb')
-rw-r--r--app/services/hashtag_query_service.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/app/services/hashtag_query_service.rb b/app/services/hashtag_query_service.rb
index 5773d78c6..5a1464805 100644
--- a/app/services/hashtag_query_service.rb
+++ b/app/services/hashtag_query_service.rb
@@ -1,13 +1,19 @@
 # frozen_string_literal: true
 
 class HashtagQueryService < BaseService
-  def call(tag, params, account = nil, local = false)
-    tags = tags_for(Array(tag.name) | Array(params[:any])).pluck(:id)
+  def call(tag, params, account = nil, local = false, priv = false)
+    tags = tags_for(Array(tag.name) | Array(params[:any]))
     all  = tags_for(params[:all])
     none = tags_for(params[:none])
 
+    all_tags = Array(tags) | Array(all) | Array(none)
+    local = all_tags.any? { |t| t.local } unless local
+    priv = all_tags.any? { |t| t.private } unless priv
+
+    tags = tags.pluck(:id)
+
     Status.distinct
-          .as_tag_timeline(tags, account, local)
+          .as_tag_timeline(tags, account, local, priv)
           .tagged_with_all(all)
           .tagged_with_none(none)
   end