Fix own posts not getting delivered to own lists (#24810)

th-downstream
Claire 2 years ago committed by GitHub
parent e1985e14f6
commit f89b5c08b6

@ -271,8 +271,8 @@ module AccountInteractions
end end
def lists_for_local_distribution def lists_for_local_distribution
lists.joins(account: :user) scope = lists.joins(account: :user)
.where.not(list_accounts: { follow_id: nil }) scope.where.not(list_accounts: { follow_id: nil }).or(scope.where(account_id: id))
.where('users.current_sign_in_at > ?', User::ACTIVE_DURATION.ago) .where('users.current_sign_in_at > ?', User::ACTIVE_DURATION.ago)
end end

@ -685,6 +685,7 @@ describe AccountInteractions do
end end
describe '#lists_for_local_distribution' do describe '#lists_for_local_distribution' do
let(:account) { Fabricate(:user, current_sign_in_at: Time.now.utc).account }
let!(:inactive_follower_user) { Fabricate(:user, current_sign_in_at: 5.years.ago) } let!(:inactive_follower_user) { Fabricate(:user, current_sign_in_at: 5.years.ago) }
let!(:follower_user) { Fabricate(:user, current_sign_in_at: Time.now.utc) } let!(:follower_user) { Fabricate(:user, current_sign_in_at: Time.now.utc) }
let!(:follow_request_user) { Fabricate(:user, current_sign_in_at: Time.now.utc) } let!(:follow_request_user) { Fabricate(:user, current_sign_in_at: Time.now.utc) }
@ -693,6 +694,8 @@ describe AccountInteractions do
let!(:follower_list) { Fabricate(:list, account: follower_user.account) } let!(:follower_list) { Fabricate(:list, account: follower_user.account) }
let!(:follow_request_list) { Fabricate(:list, account: follow_request_user.account) } let!(:follow_request_list) { Fabricate(:list, account: follow_request_user.account) }
let!(:self_list) { Fabricate(:list, account: account) }
before do before do
inactive_follower_user.account.follow!(account) inactive_follower_user.account.follow!(account)
follower_user.account.follow!(account) follower_user.account.follow!(account)
@ -701,10 +704,11 @@ describe AccountInteractions do
inactive_follower_list.accounts << account inactive_follower_list.accounts << account
follower_list.accounts << account follower_list.accounts << account
follow_request_list.accounts << account follow_request_list.accounts << account
self_list.accounts << account
end end
it 'includes only the list from the active follower' do it 'includes only the list from the active follower and from oneself' do
expect(account.lists_for_local_distribution.to_a).to eq [follower_list] expect(account.lists_for_local_distribution.to_a).to contain_exactly(follower_list, self_list)
end end
end end
end end

Loading…
Cancel
Save