# frozen_string_literal: true class PushUpdateWorker include Sidekiq::Worker include Redisable def perform(account_id, status_id, timeline_id = nil, options = {}) @status = Status.find(status_id) @account_id = account_id @timeline_id = timeline_id || "timeline:#{account_id}" @options = options.symbolize_keys render_payload! publish! rescue ActiveRecord::RecordNotFound true end private def render_payload! @payload = StatusCacheHydrator.new(@status).hydrate(@account_id) end def message Oj.dump( event: update? ? :'status.update' : :update, payload: @payload, queued_at: (Time.now.to_f * 1000.0).to_i ) end def publish! redis.publish(@timeline_id, message) end def update? @options[:update] end end