Send streaming API delete to people mentioned in status (#5103)
- Previously they wouldn't receive it unless they were author's followers - Skip unpush from public/hashtag timelines if status wasn't public in the first place
This commit is contained in:
		
							parent
							
								
									3b60832214
								
							
						
					
					
						commit
						91e5b0dfdb
					
				| @ -84,6 +84,8 @@ class BatchedRemoveStatusService < BaseService | |||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def unpush_from_public_timelines(status) |   def unpush_from_public_timelines(status) | ||||||
|  |     return unless status.public_visibility? | ||||||
|  | 
 | ||||||
|     payload = @json_payloads[status.id] |     payload = @json_payloads[status.id] | ||||||
| 
 | 
 | ||||||
|     redis.pipelined do |     redis.pipelined do | ||||||
|  | |||||||
| @ -14,6 +14,7 @@ class RemoveStatusService < BaseService | |||||||
| 
 | 
 | ||||||
|     remove_from_self if status.account.local? |     remove_from_self if status.account.local? | ||||||
|     remove_from_followers |     remove_from_followers | ||||||
|  |     remove_from_affected | ||||||
|     remove_reblogs |     remove_reblogs | ||||||
|     remove_from_hashtags |     remove_from_hashtags | ||||||
|     remove_from_public |     remove_from_public | ||||||
| @ -38,6 +39,12 @@ class RemoveStatusService < BaseService | |||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   def remove_from_affected | ||||||
|  |     @mentions.map(&:account).select(&:local?).each do |account| | ||||||
|  |       Redis.current.publish("timeline:#{account.id}", @payload) | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   def remove_from_remote_affected |   def remove_from_remote_affected | ||||||
|     # People who got mentioned in the status, or who |     # People who got mentioned in the status, or who | ||||||
|     # reblogged it from someone else might not follow |     # reblogged it from someone else might not follow | ||||||
| @ -105,6 +112,8 @@ class RemoveStatusService < BaseService | |||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def remove_from_hashtags |   def remove_from_hashtags | ||||||
|  |     return unless @status.public_visibility? | ||||||
|  | 
 | ||||||
|     @tags.each do |hashtag| |     @tags.each do |hashtag| | ||||||
|       Redis.current.publish("timeline:hashtag:#{hashtag}", @payload) |       Redis.current.publish("timeline:hashtag:#{hashtag}", @payload) | ||||||
|       Redis.current.publish("timeline:hashtag:#{hashtag}:local", @payload) if @status.local? |       Redis.current.publish("timeline:hashtag:#{hashtag}:local", @payload) if @status.local? | ||||||
| @ -112,6 +121,8 @@ class RemoveStatusService < BaseService | |||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def remove_from_public |   def remove_from_public | ||||||
|  |     return unless @status.public_visibility? | ||||||
|  | 
 | ||||||
|     Redis.current.publish('timeline:public', @payload) |     Redis.current.publish('timeline:public', @payload) | ||||||
|     Redis.current.publish('timeline:public:local', @payload) if @status.local? |     Redis.current.publish('timeline:public:local', @payload) if @status.local? | ||||||
|   end |   end | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user