about summary refs log tree commit diff
path: root/app/models/public_feed.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/public_feed.rb')
-rw-r--r--app/models/public_feed.rb13
1 files changed, 12 insertions, 1 deletions
diff --git a/app/models/public_feed.rb b/app/models/public_feed.rb
index 2528ef1b6..bc8281ef2 100644
--- a/app/models/public_feed.rb
+++ b/app/models/public_feed.rb
@@ -9,6 +9,7 @@ class PublicFeed
   # @option [Boolean] :remote
   # @option [Boolean] :only_media
   # @option [Boolean] :allow_local_only
+  # @option [String]  :locale
   def initialize(account, options = {})
     @account = account
     @options = options
@@ -29,6 +30,7 @@ class PublicFeed
     scope.merge!(remote_only_scope) if remote_only?
     scope.merge!(account_filters_scope) if account?
     scope.merge!(media_only_scope) if media_only?
+    scope.merge!(language_scope)
 
     scope.cache_ids.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id)
   end
@@ -97,10 +99,19 @@ class PublicFeed
     Status.not_local_only
   end
 
+  def language_scope
+    if account&.chosen_languages.present?
+      Status.where(language: account.chosen_languages)
+    elsif @options[:locale].present?
+      Status.where(language: @options[:locale])
+    else
+      Status.all
+    end
+  end
+
   def account_filters_scope
     Status.not_excluded_by_account(account).tap do |scope|
       scope.merge!(Status.not_domain_blocked_by_account(account)) unless local_only?
-      scope.merge!(Status.in_chosen_languages(account)) if account.chosen_languages.present?
     end
   end
 end