Move rendering of JSON payloads for public/hashtag timelines to
FanOutOnWriteService. The only recipient-specific part on them is reblogged/favourited. But since only newly created statuses appear on them, it is safe to assume that both attributes would be false
This commit is contained in:
		@@ -5,12 +5,12 @@ module ApplicationCable
 | 
				
			|||||||
    protected
 | 
					    protected
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def hydrate_status(encoded_message)
 | 
					    def hydrate_status(encoded_message)
 | 
				
			||||||
      message = ActiveSupport::JSON.decode(encoded_message)
 | 
					      message = OJ.load(encoded_message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return [nil, message] if message['event'] == 'delete'
 | 
					      return [nil, message] if message['event'] == 'delete'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      status             = Status.find_by(id: message['payload'])
 | 
					      status_json = OJ.load(message['payload'])
 | 
				
			||||||
      message['payload'] = FeedManager.instance.inline_render(current_user.account, 'api/v1/statuses/show', status)
 | 
					      status      = Status.find(status_json['id'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      [status, message]
 | 
					      [status, message]
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,12 +35,12 @@ class FanOutOnWriteService < BaseService
 | 
				
			|||||||
  def deliver_to_hashtags(status)
 | 
					  def deliver_to_hashtags(status)
 | 
				
			||||||
    Rails.logger.debug "Delivering status #{status.id} to hashtags"
 | 
					    Rails.logger.debug "Delivering status #{status.id} to hashtags"
 | 
				
			||||||
    status.tags.find_each do |tag|
 | 
					    status.tags.find_each do |tag|
 | 
				
			||||||
      FeedManager.instance.broadcast("hashtag:#{tag.name}", event: 'update', payload: status.id)
 | 
					      FeedManager.instance.broadcast("hashtag:#{tag.name}", event: 'update', payload: FeedManager.instance.inline_render(nil, 'api/v1/statuses/show', status))
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def deliver_to_public(status)
 | 
					  def deliver_to_public(status)
 | 
				
			||||||
    Rails.logger.debug "Delivering status #{status.id} to public timeline"
 | 
					    Rails.logger.debug "Delivering status #{status.id} to public timeline"
 | 
				
			||||||
    FeedManager.instance.broadcast(:public, event: 'update', payload: status.id)
 | 
					    FeedManager.instance.broadcast(:public, event: 'update', payload: FeedManager.instance.inline_render(nil, 'api/v1/statuses/show', status))
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user