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
skylight
Eugen Rochko 2017-02-02 00:39:17 +01:00
parent d9ca46b464
commit ede04cdb24
2 changed files with 5 additions and 5 deletions

View File

@ -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

View File

@ -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