From 2b8eff688fefcee35f357d47b9b92b6e0964b397 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 29 Sep 2023 10:47:11 +0200 Subject: [PATCH] Fix boosts of local users being filtered in account timelines Fixes #27195 --- app/lib/account_statuses_filter.rb | 2 +- .../account_statuses_filter_spec.rb | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) rename spec/{models => lib}/account_statuses_filter_spec.rb (91%) diff --git a/app/lib/account_statuses_filter.rb b/app/lib/account_statuses_filter.rb index a5aca96601c8d..c9ef2c7a5e68d 100644 --- a/app/lib/account_statuses_filter.rb +++ b/app/lib/account_statuses_filter.rb @@ -60,8 +60,8 @@ def filtered_reblogs_scope .where(reblog_of_id: nil) .or( scope + .where(reblog: { accounts: { domain: nil } }).or(scope.where.not(reblog: { accounts: { domain: current_account.excluded_from_timeline_domains } })) .where.not(reblog: { account_id: current_account.excluded_from_timeline_account_ids }) - .where.not(reblog: { accounts: { domain: current_account.excluded_from_timeline_domains } }) ) end diff --git a/spec/models/account_statuses_filter_spec.rb b/spec/lib/account_statuses_filter_spec.rb similarity index 91% rename from spec/models/account_statuses_filter_spec.rb rename to spec/lib/account_statuses_filter_spec.rb index 0cf6453fe35b5..c821eb4bac04f 100644 --- a/spec/models/account_statuses_filter_spec.rb +++ b/spec/lib/account_statuses_filter_spec.rb @@ -202,7 +202,7 @@ def status_with_media_attachment!(visibility) context 'when blocking a reblogged domain' do let(:other_account) { Fabricate(:account, domain: 'example.com') } let(:reblogging_status) { Fabricate(:status, account: other_account) } - let(:reblog) { Fabricate(:status, account: account, visibility: 'public', reblog: reblogging_status) } + let!(:reblog) { Fabricate(:status, account: account, visibility: 'public', reblog: reblogging_status) } before do current_account.block_domain!(other_account.domain) @@ -213,6 +213,20 @@ def status_with_media_attachment!(visibility) end end + context 'when blocking an unrelated domain' do + let(:other_account) { Fabricate(:account, domain: nil) } + let(:reblogging_status) { Fabricate(:status, account: other_account, visibility: 'public') } + let!(:reblog) { Fabricate(:status, account: account, visibility: 'public', reblog: reblogging_status) } + + before do + current_account.block_domain!('example.com') + end + + it 'returns the reblog from the non-blocked domain' do + expect(subject.results.pluck(:id)).to include(reblog.id) + end + end + context 'when muting a reblogged account' do let(:reblog) { status_with_reblog!('public') }