should_filter &&= status.account_id != status.in_reply_to_account_id # and it's not a self-reply
return should_filter
elsif status.reblog? # Filter out a reblog
- should_filter = Block.where(account_id: status.reblog.account_id, target_account_id: receiver_id).exists? # or if the author of the reblogged status is blocking me
+ src_id = status.account_id
+ should_filter = Follow.where(account_id: receiver_id, target_account_id: src_id, show_reblogs: false).exists? # if the reblogger's reblogs are suppressed
+ should_filter ||= Block.where(account_id: status.reblog.account_id, target_account_id: receiver_id).exists? # or if the author of the reblogged status is blocking me
should_filter ||= AccountDomainBlock.where(account_id: receiver_id, domain: status.reblog.account.domain).exists? # or the author's domain is blocked
return should_filter
end
expect(FeedManager.instance.filter?(:home, reblog, bob.id)).to be true
end
+ it 'returns true for reblog from account with reblogs disabled' do
+ status = Fabricate(:status, text: 'Hello world', account: jeff)
+ reblog = Fabricate(:status, reblog: status, account: alice)
+ bob.follow!(alice, reblogs: false)
+ expect(FeedManager.instance.filter?(:home, reblog, bob.id)).to be true
+ end
+
it 'returns false for reply by followee to another followee' do
status = Fabricate(:status, text: 'Hello world', account: jeff)
reply = Fabricate(:status, text: 'Nay', thread: status, account: alice)