Keep new DMs in home feeds and in the old DM timeline
Revert server-side part of 87fdd139b8
			
			
This commit is contained in:
		
							parent
							
								
									dcded13a99
								
							
						
					
					
						commit
						e45a6edd65
					
				
					 3 changed files with 31 additions and 0 deletions
				
			
		|  | @ -39,6 +39,7 @@ class BatchedRemoveStatusService < BaseService | |||
|     # Cannot be batched | ||||
|     statuses.each do |status| | ||||
|       unpush_from_public_timelines(status) | ||||
|       unpush_from_direct_timelines(status) if status.direct_visibility? | ||||
|       batch_salmon_slaps(status) if status.local? | ||||
|     end | ||||
| 
 | ||||
|  | @ -95,6 +96,16 @@ class BatchedRemoveStatusService < BaseService | |||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def unpush_from_direct_timelines(status) | ||||
|     payload = @json_payloads[status.id] | ||||
|     redis.pipelined do | ||||
|       @mentions[status.id].each do |mention| | ||||
|         redis.publish("timeline:direct:#{mention.account.id}", payload) if mention.account.local? | ||||
|       end | ||||
|       redis.publish("timeline:direct:#{status.account.id}", payload) if status.account.local? | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def batch_salmon_slaps(status) | ||||
|     return if @mentions[status.id].empty? | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,6 +9,8 @@ class FanOutOnWriteService < BaseService | |||
|     render_anonymous_payload(status) | ||||
| 
 | ||||
|     if status.direct_visibility? | ||||
|       deliver_to_mentioned_followers(status) | ||||
|       deliver_to_direct_timelines(status) | ||||
|       deliver_to_own_conversation(status) | ||||
|     elsif status.limited_visibility? | ||||
|       deliver_to_mentioned_followers(status) | ||||
|  | @ -93,6 +95,16 @@ class FanOutOnWriteService < BaseService | |||
|     Redis.current.publish('timeline:public:local:media', @payload) if status.local? | ||||
|   end | ||||
| 
 | ||||
|   def deliver_to_direct_timelines(status) | ||||
|     Rails.logger.debug "Delivering status #{status.id} to direct timelines" | ||||
| 
 | ||||
|     status.mentions.includes(:account).each do |mention| | ||||
|       Redis.current.publish("timeline:direct:#{mention.account.id}", @payload) if mention.account.local? | ||||
|     end | ||||
| 
 | ||||
|     Redis.current.publish("timeline:direct:#{status.account.id}", @payload) if status.account.local? | ||||
|   end | ||||
| 
 | ||||
|   def deliver_to_own_conversation(status) | ||||
|     AccountConversation.add_status(status.account, status) | ||||
|   end | ||||
|  |  | |||
|  | @ -21,6 +21,7 @@ class RemoveStatusService < BaseService | |||
|     remove_from_hashtags | ||||
|     remove_from_public | ||||
|     remove_from_media if status.media_attachments.any? | ||||
|     remove_from_direct if status.direct_visibility? | ||||
| 
 | ||||
|     @status.destroy! | ||||
| 
 | ||||
|  | @ -152,6 +153,13 @@ class RemoveStatusService < BaseService | |||
|     Redis.current.publish('timeline:public:local:media', @payload) if @status.local? | ||||
|   end | ||||
| 
 | ||||
|   def remove_from_direct | ||||
|     @mentions.each do |mention| | ||||
|       Redis.current.publish("timeline:direct:#{mention.account.id}", @payload) if mention.account.local? | ||||
|     end | ||||
|     Redis.current.publish("timeline:direct:#{@account.id}", @payload) if @account.local? | ||||
|   end | ||||
| 
 | ||||
|   def redis | ||||
|     Redis.current | ||||
|   end | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue