Filter statuses that mention blocked users
This commit is contained in:
		@@ -76,12 +76,15 @@ class FeedManager
 | 
				
			|||||||
      should_filter = receiver.blocking?(status.reblog.account)             # if I'm blocking the reblogged person
 | 
					      should_filter = receiver.blocking?(status.reblog.account)             # if I'm blocking the reblogged person
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    should_filter ||= receiver.blocking?(status.mentions.map(&:account_id)) # or if it mentions someone I blocked
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    should_filter
 | 
					    should_filter
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def filter_from_mentions?(status, receiver)
 | 
					  def filter_from_mentions?(status, receiver)
 | 
				
			||||||
    should_filter   = receiver.id == status.account_id                      # Filter if I'm mentioning myself
 | 
					    should_filter   = receiver.id == status.account_id                      # Filter if I'm mentioning myself
 | 
				
			||||||
    should_filter ||= receiver.blocking?(status.account)                    # or it's from someone I blocked
 | 
					    should_filter ||= receiver.blocking?(status.account)                    # or it's from someone I blocked
 | 
				
			||||||
 | 
					    should_filter ||= receiver.blocking?(status.mentions.map(&:account_id)) # or if it mentions someone I blocked
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if status.reply? && !status.thread.account.nil?                         # or it's a reply
 | 
					    if status.reply? && !status.thread.account.nil?                         # or it's a reply
 | 
				
			||||||
      should_filter ||= receiver.blocking?(status.thread.account)           # to a user I blocked
 | 
					      should_filter ||= receiver.blocking?(status.thread.account)           # to a user I blocked
 | 
				
			||||||
@@ -92,6 +95,7 @@ class FeedManager
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  def filter_from_public?(status, receiver)
 | 
					  def filter_from_public?(status, receiver)
 | 
				
			||||||
    should_filter   = receiver.blocking?(status.account)
 | 
					    should_filter   = receiver.blocking?(status.account)
 | 
				
			||||||
 | 
					    should_filter ||= receiver.blocking?(status.mentions.map(&:account_id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if status.reply? && !status.thread.account.nil?
 | 
					    if status.reply? && !status.thread.account.nil?
 | 
				
			||||||
      should_filter ||= receiver.blocking?(status.thread.account)
 | 
					      should_filter ||= receiver.blocking?(status.thread.account)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,12 +66,12 @@ class Account < ApplicationRecord
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  def unfollow!(other_account)
 | 
					  def unfollow!(other_account)
 | 
				
			||||||
    follow = active_relationships.find_by(target_account: other_account)
 | 
					    follow = active_relationships.find_by(target_account: other_account)
 | 
				
			||||||
    follow.destroy unless follow.nil?
 | 
					    follow&.destroy
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def unblock!(other_account)
 | 
					  def unblock!(other_account)
 | 
				
			||||||
    block = block_relationships.find_by(target_account: other_account)
 | 
					    block = block_relationships.find_by(target_account: other_account)
 | 
				
			||||||
    block.destroy unless block.nil?
 | 
					    block&.destroy
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def following?(other_account)
 | 
					  def following?(other_account)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user