Fix regression from #3490 - filter out hidden statuses from ancestors/descendants even if the viewer is anonymous (#3752)
This commit is contained in:
		
							parent
							
								
									bb911043de
								
							
						
					
					
						commit
						8518d005fd
					
				| 
						 | 
					@ -9,7 +9,7 @@ class StatusFilter
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def filtered?
 | 
					  def filtered?
 | 
				
			||||||
    account_present? && filtered_status?
 | 
					    blocked_by_policy? || (account_present? && filtered_status?) || silenced_account?
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ class StatusFilter
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def filtered_status?
 | 
					  def filtered_status?
 | 
				
			||||||
    blocking_account? || blocking_domain? || muting_account? || silenced_account? || blocked_by_policy?
 | 
					    blocking_account? || blocking_domain? || muting_account?
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def blocking_account?
 | 
					  def blocking_account?
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ class StatusFilter
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def account_following_status_account?
 | 
					  def account_following_status_account?
 | 
				
			||||||
    account.following? status.account_id
 | 
					    account&.following? status.account_id
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def blocked_by_policy?
 | 
					  def blocked_by_policy?
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,25 @@ describe StatusFilter do
 | 
				
			||||||
    context 'without an account' do
 | 
					    context 'without an account' do
 | 
				
			||||||
      subject { described_class.new(status, nil) }
 | 
					      subject { described_class.new(status, nil) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      it { is_expected.not_to be_filtered }
 | 
					      context 'when there are no connections' do
 | 
				
			||||||
 | 
					        it { is_expected.not_to be_filtered }
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      context 'when status account is silenced' do
 | 
				
			||||||
 | 
					        before do
 | 
				
			||||||
 | 
					          status.account.update(silenced: true)
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        it { is_expected.to be_filtered }
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      context 'when status policy does not allow show' do
 | 
				
			||||||
 | 
					        before do
 | 
				
			||||||
 | 
					          expect_any_instance_of(StatusPolicy).to receive(:show?).and_return(false)
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        it { is_expected.to be_filtered }
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    context 'with real account' do
 | 
					    context 'with real account' do
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue