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,9 +9,27 @@ 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) }
|
||||||
|
|
||||||
|
context 'when there are no connections' do
|
||||||
it { is_expected.not_to be_filtered }
|
it { is_expected.not_to be_filtered }
|
||||||
end
|
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
|
||||||
|
|
||||||
context 'with real account' do
|
context 'with real account' do
|
||||||
let(:account) { Fabricate(:account) }
|
let(:account) { Fabricate(:account) }
|
||||||
subject { described_class.new(status, account) }
|
subject { described_class.new(status, account) }
|
||||||
|
|
Reference in a new issue