about summary refs log tree commit diff
path: root/app/models
diff options
context:
space:
mode:
authorMatt Jankowski <mjankowski@thoughtbot.com>2017-05-01 11:42:13 -0400
committerEugen Rochko <eugen@zeonfederated.com>2017-05-01 17:42:13 +0200
commitf025cc67827a5b1b1faf10dec9d5a1e14e67fa5f (patch)
tree8c077d9b08ebbe4088490c5f55e7a5ec806e1176 /app/models
parent3988f2dade8a75cb642db8c239097bfcf8943a0d (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.rb2
-rw-r--r--app/models/status.rb5
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