Change public timelines to be filtered by current locale by default (#19291)
In the absence of an opt-in to multiple specific languages in the preferences, it makes more sense to filter by the user's presumed language only (interface language or `lang` override)
This commit is contained in:
parent
d2528b26b6
commit
9f65909f42
6 changed files with 16 additions and 18 deletions
|
@ -8,6 +8,7 @@ class PublicFeed
|
|||
# @option [Boolean] :local
|
||||
# @option [Boolean] :remote
|
||||
# @option [Boolean] :only_media
|
||||
# @option [String] :locale
|
||||
def initialize(account, options = {})
|
||||
@account = account
|
||||
@options = options
|
||||
|
@ -27,6 +28,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
|
||||
|
@ -83,10 +85,19 @@ class PublicFeed
|
|||
Status.joins(:media_attachments).group(:id)
|
||||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue