Keep new DMs in home feeds and in the old DM timeline
Revert server-side part of 87fdd139b8
			
			
This commit is contained in:
		@@ -39,6 +39,7 @@ class BatchedRemoveStatusService < BaseService
 | 
				
			|||||||
    # Cannot be batched
 | 
					    # Cannot be batched
 | 
				
			||||||
    statuses.each do |status|
 | 
					    statuses.each do |status|
 | 
				
			||||||
      unpush_from_public_timelines(status)
 | 
					      unpush_from_public_timelines(status)
 | 
				
			||||||
 | 
					      unpush_from_direct_timelines(status) if status.direct_visibility?
 | 
				
			||||||
      batch_salmon_slaps(status) if status.local?
 | 
					      batch_salmon_slaps(status) if status.local?
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -95,6 +96,16 @@ class BatchedRemoveStatusService < BaseService
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
  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)
 | 
					  def batch_salmon_slaps(status)
 | 
				
			||||||
    return if @mentions[status.id].empty?
 | 
					    return if @mentions[status.id].empty?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,8 @@ class FanOutOnWriteService < BaseService
 | 
				
			|||||||
    render_anonymous_payload(status)
 | 
					    render_anonymous_payload(status)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if status.direct_visibility?
 | 
					    if status.direct_visibility?
 | 
				
			||||||
 | 
					      deliver_to_mentioned_followers(status)
 | 
				
			||||||
 | 
					      deliver_to_direct_timelines(status)
 | 
				
			||||||
      deliver_to_own_conversation(status)
 | 
					      deliver_to_own_conversation(status)
 | 
				
			||||||
    elsif status.limited_visibility?
 | 
					    elsif status.limited_visibility?
 | 
				
			||||||
      deliver_to_mentioned_followers(status)
 | 
					      deliver_to_mentioned_followers(status)
 | 
				
			||||||
@@ -93,6 +95,16 @@ class FanOutOnWriteService < BaseService
 | 
				
			|||||||
    Redis.current.publish('timeline:public:local:media', @payload) if status.local?
 | 
					    Redis.current.publish('timeline:public:local:media', @payload) if status.local?
 | 
				
			||||||
  end
 | 
					  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)
 | 
					  def deliver_to_own_conversation(status)
 | 
				
			||||||
    AccountConversation.add_status(status.account, status)
 | 
					    AccountConversation.add_status(status.account, status)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@ class RemoveStatusService < BaseService
 | 
				
			|||||||
    remove_from_hashtags
 | 
					    remove_from_hashtags
 | 
				
			||||||
    remove_from_public
 | 
					    remove_from_public
 | 
				
			||||||
    remove_from_media if status.media_attachments.any?
 | 
					    remove_from_media if status.media_attachments.any?
 | 
				
			||||||
 | 
					    remove_from_direct if status.direct_visibility?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @status.destroy!
 | 
					    @status.destroy!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -152,6 +153,13 @@ class RemoveStatusService < BaseService
 | 
				
			|||||||
    Redis.current.publish('timeline:public:local:media', @payload) if @status.local?
 | 
					    Redis.current.publish('timeline:public:local:media', @payload) if @status.local?
 | 
				
			||||||
  end
 | 
					  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
 | 
					  def redis
 | 
				
			||||||
    Redis.current
 | 
					    Redis.current
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user