mirror of
https://github.com/lunaisnotaboy/mastodon.git
synced 2024-09-07 10:47:24 +00:00
Actually filter blocked reblogs from feed
And even a relevant test. Whoops.
This commit is contained in:
parent
48c705bbad
commit
9a42f7cbed
|
@ -160,7 +160,9 @@ class FeedManager
|
|||
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
|
||||
|
|
|
@ -56,6 +56,13 @@ RSpec.describe FeedManager do
|
|||
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)
|
||||
|
|
Loading…
Reference in a new issue