Extract logic for determining ActivityPub inboxes to send deletes to to its own class and explicitly include the person the status replied to (even if not mentioned), people who favourited it, and people who replied to it (though that one is still not recursive)
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			934 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			934 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| class StatusReachFinder
 | |
|   def initialize(status)
 | |
|     @status = status
 | |
|   end
 | |
| 
 | |
|   def inboxes
 | |
|     Account.where(id: reached_account_ids).inboxes
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def reached_account_ids
 | |
|     [
 | |
|       replied_to_account_id,
 | |
|       reblog_of_account_id,
 | |
|       mentioned_account_ids,
 | |
|       reblogs_account_ids,
 | |
|       favourites_account_ids,
 | |
|       replies_account_ids,
 | |
|     ].tap do |arr|
 | |
|       arr.flatten!
 | |
|       arr.compact!
 | |
|       arr.uniq!
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def replied_to_account_id
 | |
|     @status.in_reply_to_account_id
 | |
|   end
 | |
| 
 | |
|   def reblog_of_account_id
 | |
|     @status.reblog.account_id if @status.reblog?
 | |
|   end
 | |
| 
 | |
|   def mentioned_account_ids
 | |
|     @status.mentions.pluck(:account_id)
 | |
|   end
 | |
| 
 | |
|   def reblogs_account_ids
 | |
|     @status.reblogs.pluck(:account_id)
 | |
|   end
 | |
| 
 | |
|   def favourites_account_ids
 | |
|     @status.favourites.pluck(:account_id)
 | |
|   end
 | |
| 
 | |
|   def replies_account_ids
 | |
|     @status.replies.pluck(:account_id)
 | |
|   end
 | |
| end
 |