From f025cc67827a5b1b1faf10dec9d5a1e14e67fa5f Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 1 May 2017 11:42:13 -0400 Subject: Filter on allowed user language preferences (#2361) * Naive approached to timeline filtering * Convert allowed_languages into a db column * Allow users to choose languages to see statuses in * Style list items as two columns * Add a hint to explain language filtering preference --- app/models/account.rb | 2 ++ app/models/status.rb | 5 +++++ 2 files changed, 7 insertions(+) (limited to 'app/models') diff --git a/app/models/account.rb b/app/models/account.rb index 03584b4e6..c5fc6d7ab 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -82,6 +82,8 @@ class Account < ApplicationRecord prefix: true, allow_nil: true + delegate :allowed_languages, to: :user, prefix: false, allow_nil: true + def follow!(other_account) active_relationships.where(target_account: other_account).first_or_create!(target_account: other_account) end diff --git a/app/models/status.rb b/app/models/status.rb index f005813e5..3243d1ecb 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -119,6 +119,10 @@ class Status < ApplicationRecord end class << self + def in_allowed_languages(account) + where(language: account.allowed_languages) + end + def as_home_timeline(account) where(account: [account] + account.following) end @@ -198,6 +202,7 @@ class Status < ApplicationRecord def filter_timeline_for_account(query, account) query = query.not_excluded_by_account(account) + query = query.in_allowed_languages(account) if account.allowed_languages.present? query.merge(account_silencing_filter(account)) end -- cgit