Keep new DMs in home feeds and in the old DM timeline
Revert server-side part of 87fdd139b890e60f752bf71e3b09d79eaefcf7b5
This commit is contained in:
		
							parent
							
								
									dcded13a99
								
							
						
					
					
						commit
						e45a6edd65
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user