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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user