diff options
author | Matt Jankowski <mjankowski@thoughtbot.com> | 2017-05-01 11:42:13 -0400 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-05-01 17:42:13 +0200 |
commit | f025cc67827a5b1b1faf10dec9d5a1e14e67fa5f (patch) | |
tree | 8c077d9b08ebbe4088490c5f55e7a5ec806e1176 /app/models | |
parent | 3988f2dade8a75cb642db8c239097bfcf8943a0d (diff) |
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
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/account.rb | 2 | ||||
-rw-r--r-- | app/models/status.rb | 5 |
2 files changed, 7 insertions, 0 deletions
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 |