diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2018-05-03 10:41:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-03 10:41:58 +0200 |
commit | a5293fdf619b0be32a420c36a73e7ecfbe6d27cd (patch) | |
tree | 88dca473e89c1b2201c12e0a8a9d495a338f8712 /app/lib | |
parent | a3d84e705a6e19ebbc240604de62c3ef8531ddf9 (diff) |
Fix n+1 queries in StatusThreadingConcern (#7321)
Diffstat (limited to 'app/lib')
-rw-r--r-- | app/lib/status_filter.rb | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/app/lib/status_filter.rb b/app/lib/status_filter.rb index 41d4381e5..b6c80b801 100644 --- a/app/lib/status_filter.rb +++ b/app/lib/status_filter.rb @@ -3,9 +3,10 @@ class StatusFilter attr_reader :status, :account - def initialize(status, account) - @status = status - @account = account + def initialize(status, account, preloaded_relations = {}) + @status = status + @account = account + @preloaded_relations = preloaded_relations end def filtered? @@ -24,15 +25,15 @@ class StatusFilter end def blocking_account? - account.blocking? status.account_id + @preloaded_relations[:blocking] ? @preloaded_relations[:blocking][status.account_id] : account.blocking?(status.account_id) end def blocking_domain? - account.domain_blocking? status.account_domain + @preloaded_relations[:domain_blocking_by_domain] ? @preloaded_relations[:domain_blocking_by_domain][status.account_domain] : account.domain_blocking?(status.account_domain) end def muting_account? - account.muting? status.account_id + @preloaded_relations[:muting] ? @preloaded_relations[:muting][status.account_id] : account.muting?(status.account_id) end def silenced_account? @@ -44,7 +45,7 @@ class StatusFilter end def account_following_status_account? - account&.following? status.account_id + @preloaded_relations[:following] ? @preloaded_relations[:following][status.account_id] : account&.following?(status.account_id) end def blocked_by_policy? @@ -52,6 +53,6 @@ class StatusFilter end def policy_allows_show? - StatusPolicy.new(account, status).show? + StatusPolicy.new(account, status, @preloaded_relations).show? end end |