diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/models/status.rb | 10 | ||||
-rw-r--r-- | app/services/precompute_feed_service.rb | 6 |
2 files changed, 10 insertions, 6 deletions
diff --git a/app/models/status.rb b/app/models/status.rb index 24d3db2bf..544d2e005 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -131,7 +131,15 @@ class Status < ApplicationRecord end def as_home_timeline(account) - where(account: [account] + account.following) + # 'references' is a workaround for the following issue: + # Inconsistent results with #or in ActiveRecord::Relation with respect to documentation Issue #24055 rails/rails + # https://github.com/rails/rails/issues/24055 + references(:mentions) + .where.not(visibility: :direct) + .or(where(mentions: { account: account })) + .where(follows: { account_id: account }) + .or(references(:mentions, :follows).where(account: account)) + .left_outer_joins(account: :followers).left_outer_joins(:mentions).group(:id) end def as_public_timeline(account = nil, local_only = false) diff --git a/app/services/precompute_feed_service.rb b/app/services/precompute_feed_service.rb index 626ec2f6c..83765bb05 100644 --- a/app/services/precompute_feed_service.rb +++ b/app/services/precompute_feed_service.rb @@ -23,11 +23,7 @@ class PrecomputeFeedService < BaseService end def process_status(status) - add_status_to_feed(status) unless skip_status?(status) - end - - def skip_status?(status) - status.direct_visibility? || status_filtered?(status) + add_status_to_feed(status) unless status_filtered?(status) end def add_status_to_feed(status) |