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
					
				
					 2 changed files with 13 additions and 0 deletions
				
			
		|  | @ -84,6 +84,8 @@ class BatchedRemoveStatusService < BaseService | |||
|   end | ||||
| 
 | ||||
|   def unpush_from_public_timelines(status) | ||||
|     return unless status.public_visibility? | ||||
| 
 | ||||
|     payload = @json_payloads[status.id] | ||||
| 
 | ||||
|     redis.pipelined do | ||||
|  |  | |||
|  | @ -14,6 +14,7 @@ class RemoveStatusService < BaseService | |||
| 
 | ||||
|     remove_from_self if status.account.local? | ||||
|     remove_from_followers | ||||
|     remove_from_affected | ||||
|     remove_reblogs | ||||
|     remove_from_hashtags | ||||
|     remove_from_public | ||||
|  | @ -38,6 +39,12 @@ class RemoveStatusService < BaseService | |||
|     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 | ||||
|     # People who got mentioned in the status, or who | ||||
|     # reblogged it from someone else might not follow | ||||
|  | @ -105,6 +112,8 @@ class RemoveStatusService < BaseService | |||
|   end | ||||
| 
 | ||||
|   def remove_from_hashtags | ||||
|     return unless @status.public_visibility? | ||||
| 
 | ||||
|     @tags.each do |hashtag| | ||||
|       Redis.current.publish("timeline:hashtag:#{hashtag}", @payload) | ||||
|       Redis.current.publish("timeline:hashtag:#{hashtag}:local", @payload) if @status.local? | ||||
|  | @ -112,6 +121,8 @@ class RemoveStatusService < BaseService | |||
|   end | ||||
| 
 | ||||
|   def remove_from_public | ||||
|     return unless @status.public_visibility? | ||||
| 
 | ||||
|     Redis.current.publish('timeline:public', @payload) | ||||
|     Redis.current.publish('timeline:public:local', @payload) if @status.local? | ||||
|   end | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue