unfollow sites when blocked

This commit is contained in:
Kyle Drake 2024-01-03 17:03:27 -06:00
parent e96bce69bd
commit c7764d3ed5
2 changed files with 42 additions and 0 deletions

View file

@ -627,10 +627,23 @@ class Site < Sequel::Model
@blocking_site_ids ||= blockings_dataset.select(:site_id).all.collect {|s| s.site_id}
end
def unfollow_blocked_sites!
blockings.each do |blocking|
follows.each do |follow|
follow.destroy if follow.actioning_site_id == blocking.site_id
end
followings.each do |following|
following.destroy if following.site_id == blocking.site_id
end
end
end
def block!(site)
block = blockings_dataset.filter(site_id: site.id).first
return true if block
add_blocking site: site
unfollow_blocked_sites!
end
def unblock!(site)

View file

@ -104,6 +104,35 @@ describe 'site page' do
visit "/browse?tag=#{@tag}"
_(page.find('.website-Gallery .username a')['href']).must_match /\/site\/#{@blocked_site.username}/
end
it 'removes follows/followings when blocking' do
site = Fabricate :site
not_blocked_site = Fabricate :site
blocked_site = Fabricate :site
site.add_follow actioning_site: not_blocked_site
site.add_following site: not_blocked_site
site.add_follow actioning_site: blocked_site
site.add_following site: blocked_site
_(site.follows.count).must_equal 2
_(site.followings.count).must_equal 2
page.set_rack_session id: site.id
visit "/site/#{blocked_site.username}"
click_link 'Block'
click_button 'Block Site'
_(site.follows.count).must_equal 1
_(site.followings.count).must_equal 1
_(site.follows.count {|s| s.actioning_site == blocked_site}).must_equal 0
_(site.followings.count {|s| s.site == blocked_site}).must_equal 0
end
end
it '404s if site is banned' do