Change language opt-out to language opt-in (#7823)
* Switch filtered_languages to chosen_languages * Adjust interface * Remove unused translations
This commit is contained in:
		@@ -27,7 +27,7 @@ class Settings::PreferencesController < ApplicationController
 | 
			
		||||
  def user_params
 | 
			
		||||
    params.require(:user).permit(
 | 
			
		||||
      :locale,
 | 
			
		||||
      filtered_languages: []
 | 
			
		||||
      chosen_languages: []
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -141,7 +141,7 @@ class Account < ApplicationRecord
 | 
			
		||||
           prefix: true,
 | 
			
		||||
           allow_nil: true
 | 
			
		||||
 | 
			
		||||
  delegate :filtered_languages, to: :user, prefix: false, allow_nil: true
 | 
			
		||||
  delegate :chosen_languages, to: :user, prefix: false, allow_nil: true
 | 
			
		||||
 | 
			
		||||
  def local?
 | 
			
		||||
    domain.nil?
 | 
			
		||||
 
 | 
			
		||||
@@ -190,8 +190,8 @@ class Status < ApplicationRecord
 | 
			
		||||
  before_validation :set_local
 | 
			
		||||
 | 
			
		||||
  class << self
 | 
			
		||||
    def not_in_filtered_languages(account)
 | 
			
		||||
      where(language: nil).or where.not(language: account.filtered_languages)
 | 
			
		||||
    def in_chosen_languages(account)
 | 
			
		||||
      where(language: nil).or where(language: account.chosen_languages)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def as_home_timeline(account)
 | 
			
		||||
@@ -333,7 +333,7 @@ class Status < ApplicationRecord
 | 
			
		||||
    def filter_timeline_for_account(query, account, local_only)
 | 
			
		||||
      query = query.not_excluded_by_account(account)
 | 
			
		||||
      query = query.not_domain_blocked_by_account(account) unless local_only
 | 
			
		||||
      query = query.not_in_filtered_languages(account) if account.filtered_languages.present?
 | 
			
		||||
      query = query.in_chosen_languages(account) if account.chosen_languages.present?
 | 
			
		||||
      query.merge(account_silencing_filter(account))
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@
 | 
			
		||||
#  moderator                 :boolean          default(FALSE), not null
 | 
			
		||||
#  invite_id                 :bigint(8)
 | 
			
		||||
#  remember_token            :string
 | 
			
		||||
#  chosen_languages          :string           is an Array
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class User < ApplicationRecord
 | 
			
		||||
@@ -317,7 +318,9 @@ class User < ApplicationRecord
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def sanitize_languages
 | 
			
		||||
    filtered_languages.reject!(&:blank?)
 | 
			
		||||
    return if chosen_languages.nil?
 | 
			
		||||
    chosen_languages.reject!(&:blank?)
 | 
			
		||||
    self.chosen_languages = nil if chosen_languages.empty?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def prepare_new_user!
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
  .fields-group
 | 
			
		||||
    = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale
 | 
			
		||||
 | 
			
		||||
    = f.input :filtered_languages, collection: filterable_languages, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
 | 
			
		||||
    = f.input :chosen_languages, collection: filterable_languages.sort, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
 | 
			
		||||
 | 
			
		||||
  %h4= t 'preferences.publishing'
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user