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 falsegh/stable
parent
d9ca46b464
commit
ede04cdb24
|
@ -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